Lista 8

Zadanie 1

#include <cstdlib>

#include <iostream>

#include <time.h>

using namespace std;

struct Lista{

int dana; //dana w liscie - w tej bedzie to int

Lista *next; //wsk to next element

};

void wstaw(Lista*& head, int liczba) //dodawanie elementu na poczatek listy

{

Lista* TMP = new Lista;

TMP->dana = liczba; //przesun stary pierwszy element

TMP->next = head;

head = TMP; //nowy 1-wszy element

}

void usun(Lista*& head,int a) //odejmowanie elementu o podanej wartosci - a

{

Lista* TMP = new Lista; //zmienna pomocnicza

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head; //element pierwszy (head - czolowy)

if (head->dana == a)

{

head = head->next;

}

else{

while(head != NULL)

{

if (head->dana == a)

{

TMP->next = head->next;

free(head);

head = TMP;

}

TMP = head;

head = head->next;

}

head = pierwszy;

}

}

void wyswietl(const Lista* head)

{

while (head !=NULL)

{

cout << head->dana << " ";

head = head->next;

}

}

int wstaw_przed(Lista*& head,int a,int b) //dodanie el do listy przed el a - zadanym

{

Lista* TMP = new Lista; //zmienna pomocnicza

Lista* NEW = new Lista;

NEW->dana = b;

NEW->next = head->next;

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

if(head->dana != a) //zabezpieczenie - czy ni podajemy wartosci head

pierwszy = head; //first = element pierwszy (head - czolowy)

else

{

wstaw(head, b);

return 0;}

while (head != NULL)

{

TMP = head->next; //TMP = nastepny element listy

if (TMP->dana == a)

{

NEW->next = head->next;

head->next = NEW;

head = pierwszy;

return 0;

}

head = head->next;

}

}

int wstaw_za(Lista*& head,int a,int b) //dodanie el do listy po el a - zadanym

{

Lista* TMP = new Lista; //zmienna pomocnicza

Lista* NEW = new Lista;

NEW->dana = b; NEW->next = head->next;

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

while (head != NULL)

{

if (head->dana == a)

{

NEW->next = head->next;

head->next = NEW;

head = pierwszy;

return 0;

}

head = head->next;

}

}

int szukaj(Lista*& head,int a) //przeszukanie listy w celu znalezienia wartosci - a

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

int licznik=0;

while (head != NULL)

{

if (head->dana == a)

{

cout<<"znaleziono na pozycji "<<licznik<<endl;

head = pierwszy;

return 0;

}

head = head->next;

licznik++;

}

cout<<"nie znaleziono"<<endl;

head = pierwszy;

return 0;

}

void ilosc_elem(Lista*& head)

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

int licznik = 0;

while (head != 0)

{

head = head -> next;

licznik++;

}

cout<<"lista ma "<<licznik<<" elementow"<<endl;

head = pierwszy;

}

int main(int argc, char *argv[])

{

Lista* head = NULL;

int b;

int c;

int n;

srand((NULL));

cout<<"Podaj dlugosc listy: ";

cin>>n;

cout<<endl;

cout<<"A: ";

for(int i=0;i<n;i++)

{

b=rand()%100+1;

wstaw(head,b);

}

wyswietl(head);

cout<<endl;

//dodaj przed

cout<<"Podaj wartosc przed ktorym chcesz wstawic element: ";

cin>>b;

cout<<endl;

cout<<"Poadj wartosc do dodania: ";

cin>>c;

cout<<endl;

wstaw_przed(head,b,c);

cout<<"B: ";

wyswietl(head);

cout<<endl;

//dodaj za

cout<<"Podaj wartosc za ktorym chcesz wstawic element: ";

cin>>b;

cout<<endl;

cout<<"Poadj wartosc do dodania: ";

cin>>c;

cout<<endl;

wstaw_za(head,b,c);

cout<<"C: ";

wyswietl(head);

cout<<endl;

//usuwanie elementu

cout<<"Podaj wartosc do usuniecia: ";

cin>>b;

cout<<endl;

usun(head,b);

cout<<"D: ";

wyswietl(head);

cout<<endl;

//przeszukiwanie

cout<<"Podaj wartosc jaka chcesz znalesc: ";

cin>>b;

cout<<endl;

szukaj(head,b);

cout<<"E: ";

wyswietl(head);

cout<<endl;

//ilosc elementow

cout<<"F: ";

ilosc_elem(head);

cout<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Zadanie 2

#include <cstdlib>

#include <iostream>

#include <time.h>

using namespace std;

struct Lista{

int dana; //dana w liscie - w tej bedzie to int

Lista *next; //wsk to next element

};

int main(int argc, char *argv[])

{

Lista* head = NULL;

Lista* zastepcza = new Lista;

Lista* pierwszy = new Lista;

srand(time(NULL));

int n=0;

cout<<"Podaj wielkosc listy: ";

cin>>n;

for(int i=1; i<=n; i++)

{

Lista* TMP = new Lista;

TMP->dana = rand()%100+1;

TMP->next = head;

head = TMP;

}

pierwszy = head;

cout<<"Lista :"<<endl;

for(int i=1; i<=n; i++)

{

cout<<head->dana<<" ";

if (i==n) head->next = pierwszy; //lista staje sie cykliczna

head = head -> next;

}

head = pierwszy;

cout<<endl;

int k = 3;

double c=n;

int j = 0;

while (c > 1)

{

for(int i=1;i<k;i++)

{

zastepcza = head;

head = head ->next;

}

zastepcza ->next = head -> next;

free(head);

c--;

head = zastepcza;

cout<<"Lista: "<<endl;

for(int i=1;i<=n;i++)

{

cout<<head->dana<<" ";

head = head -> next;

}

head = zastepcza;

head = head ->next;

cout<<endl;

}

cout<<"Zwyciezca wyliczanki: "<<endl;

cout<<head->dana<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Zadnie 3

#include <cstdlib>

#include <iostream>

using namespace std;

struct Lista{

int dana; //dana w liscie - w tej bedzie to int

Lista *next; //wsk to next element

};

void wstaw1(Lista*& head, int liczba) //dodawanie elementu na poczatek listy

{

Lista* TMP = new Lista;

TMP->dana = liczba; //przesun stary pierwszy element

TMP->next = head;

head = TMP; //nowy 1-wszy element

}

void wstaw(Lista*& head, int liczba) //dodawanie elementu na poczatek listy

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

Lista* pom = new Lista;

pierwszy = head; //element pierwszy (head - czolowy)

while (head != NULL)

{

pom = head;

head = head -> next;

}

head = pom;

Lista* TMP = new Lista;

TMP->dana = liczba;

TMP->next = head->next;

head->next = TMP;

head = pierwszy;

}

void usun(Lista*& head) //usun pierwszy el

{

int a = 0;

Lista* TMP = new Lista; //zmienna pomocnicza

TMP = head -> next;

free(head);

head = TMP;

}

void wyswietl(const Lista* head)

{

while (head !=NULL)

{

cout << head->dana << " ";

head = head->next;

}

}

int szukaj(Lista*& head,int a) //przeszukanie listy w celu znalezienia wartosci - a

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

int licznik=0;

while (head != NULL)

{

if (head->dana == a)

{

cout<<"Znaleziono na pozycji: "<<licznik<<endl;

head = pierwszy;

return 0;

}

head = head->next;

licznik++;

}

cout<<"Nie znaleziono"<<endl;

head = pierwszy;

return 0;

}

void ilosc_elem(Lista*& head)

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

int licznik = 0;

while (head != 0)

{

head = head -> next;

licznik++;

}

cout<<"Lista ma: "<<licznik<<" elementow"<<endl;

head = pierwszy;

}

void sprawdz(Lista*& head)

{

if(head == NULL)

cout<<"Pusta"<<endl;

else cout<<"Nie pusta"<<endl;

}

int main(int argc, char *argv[])

{

Lista* head = NULL;

int b;

int c;

int n;

int empty = 0;

cout<<"Podaj dlugosc kolejki: ";

cin>>n;

cout<<endl;

//wprowadzanie elementu

for(int i=0;i<n;i++)

{

cout<<"wprowadz liczbe: ";

cin>>b;

if(empty==0)

{

empty++;

wstaw1(head, b);

}

else

{

empty++;

wstaw(head, b);

}

}

cout<<"A: ";

wyswietl(head);

cout<<endl;

//usuwanie pierwszego elementu

usun(head);

cout<<"Po usunieciu pierwszego elementu: "<<endl;

cout<<"B: ";

wyswietl(head);

cout<<endl;

//ile elementow

cout<<"C: ";

ilosc_elem(head);

cout<<endl;

//czy pusta

cout<<"D: ";

sprawdz(head);

cout<<endl;

//szukaj elementu

cout<<"Podaj szukana wartosc: ";

cin>>b;

cout<<endl;

szukaj(head,b);

cout<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Zadanie 4

#include <cstdlib>

#include <iostream>

#include <time.h>

using namespace std;

struct Lista{

int dana; //dana w liscie - w tej bedzie to int

Lista *next; //wsk to next element

};

int ilosc_elem(Lista*& head)

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

pierwszy = head;

int licznik = 0;

while (head != 0)

{

head = head -> next;

licznik++;

}

head = pierwszy;

return licznik;

}

void sortuj(Lista*& head)

{

Lista* pom = new Lista;

Lista* pom1 = new Lista;

Lista* pierwszy = new Lista;

Lista* TMP = new Lista;

pierwszy = head;

int n = ilosc_elem(head),licznik=0;

if (n>1){

for (int i = 0 ;i < n-1 ;i++)

{

TMP = head;

head = head -> next;

if (TMP->dana > head->dana)

{

licznik++;

TMP->next = head -> next;

head->next = TMP;

if (i==0) pierwszy = head ;

if (licznik>1)

{

pom1=head;

head = pom;

head->next = pom1;

head = pom1;

}

pom =head;

head = head->next;

}

}

}

head = pierwszy;

}

void wstaw1(Lista*& head, int liczba) //dodawanie elementu na poczatek listy

{

Lista* TMP = new Lista;

TMP->dana = liczba; //przesun stary pierwszy element

TMP->next = head;

head = TMP; //nowy 1-wszy element

sortuj(head);

}

void wstaw(Lista*& head, int liczba) //dodawanie elementu na poczatek listy

{

Lista* pierwszy = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego

Lista* pom = new Lista;

pierwszy = head; //element pierwszy (head - czolowy)

while (head != NULL)

{

pom = head;

head = head -> next;

}

head = pom;

Lista* TMP = new Lista;

TMP->dana = liczba;

TMP->next = head->next;

head->next = TMP;

head = pierwszy;

sortuj(head);

}

void usun(Lista*& head) //usun pierwszy el

{

int a = 0;

Lista* TMP = new Lista; //zmienna pomocnicza

TMP = head -> next;

free(head);

head = TMP;

}

void wyswietl(const Lista* head)

{

while (head !=NULL)

{

cout << head->dana << " ";

head = head->next;

}

}

int main(int argc, char *argv[])

{

Lista* head = NULL;

int b;

int c;

int n;

int empty = 0;

srand(time(NULL));

cout<<"Podaj dlugosc kolejki: ";

cin>>n;

//wypelnia kolejke

for(int i=0;i<n;i++)

{

b=rand()%100+1;

if(empty==0)

{

empty++;

wstaw1(head,b);

}

else

{

empty++;

wstaw1(head,b);

}

}

cout<<endl;

cout<<"A: ";

wyswietl(head);

cout<<endl;

//wstawienie elementu

cout<<"Podaj iczbe: ";

cin>>b;

wstaw1(head,b);

cout<<endl<<"B: ";

wyswietl(head);

cout<<endl;

//usun najmniejszy

cout<<"Po usunieciu najmniejszego elementu: "<<endl;

cout<<"C: ";

usun(head);

wyswietl(head);

cout<<endl;

//ilosc elementow

cout<<"D: lista ma: "<<ilosc_elem(head)<<" elementw. \n";

system("PAUSE");

return EXIT_SUCCESS;

}








Wyszukiwarka