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;
}