Zadanie 1
#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 AddToList(Lista*& head, int Liczba1) //dodawanie elementu na poczatek listy
{
Lista* TMP = new Lista;
TMP->dana = Liczba1; //przesun stary pierwszy element
TMP->next = head;
head = TMP; //nowy 1-wszy element
}
void D(Lista*& head,int a) //odejmowanie elementu o podanej wartosci - a
{
Lista* TMP = new Lista; //zmienna pomocnicza
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head; //first = 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 = first;
}
}
void G(const Lista* head)
{
while (head !=NULL)
{
cout << head->dana << " ";
head = head->next;
}
}
int B(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* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
if(head->dana != a) //zabezpieczenie - czy ni podajemy wartosci head
first = head; //first = element pierwszy (head - czolowy)
else {AddToList(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 = first;
return 0;
}
head = head->next;
}
}
int C(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* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
while (head != NULL)
{
if (head->dana == a)
{
NEW->next = head->next;
head->next = NEW;
head = first;
return 0;
}
head = head->next;
}
}
int E(Lista*& head,int a) //przeszukanie listy w celu znalezienia wartosci - a
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
int j=0;
while (head != NULL)
{
if (head->dana == a)
{
cout<<"znaleziono na pozycji "<<j<<endl;
head = first;
return 0;
}
head = head->next;
j++;
}
cout<<"nie znaleziono"<<endl;
head = first;
return 0;
}
void F(Lista*& head)
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
int x = 0;
while (head != 0)
{
head = head -> next;
x++;
}
cout<<"lista ma "<<x<<" elementow"<<endl;
head = first;
}
void Pisz()
{
cout<<endl;
cout<<"wprowadz znak:"<<endl;
cout<<"a - aby dodac element listy na poczatek"<<endl;
cout<<"w - aby wyswietlic element listy - podpunkt g "<<endl;
cout<<"b - aby wykonac podpunkt b"<<endl;
cout<<"c - aby wykonac podpunkt c"<<endl;
cout<<"d - aby wykonac podpunkt d"<<endl;
cout<<"e - aby wykonac podpunkt e"<<endl;
cout<<"f - aby wykonac podpunkt f"<<endl;
cout<<"q - aby zakonczyc"<<endl;
cout<<endl;
}
int main(int argc, char *argv[])
{
Lista* head = NULL;
char a = ' ';
int b,c;
while(a!='q')
{
Pisz();
cin>>a;
cout<<endl;
if (a=='a'){cout<<"wprowadz liczbe: ";cin>>b; AddToList(head, b);}
else if (a=='w')G(head);
else if (a=='d'){cout<<"podaj wartosc elementu: ";cin>>b;cout<<endl;D(head,b);}
else if (a=='b'){cout<<"podaj wartosc elementu przed ktory wstawic: ";cin>>b;cout<<endl;
cout<<"podaj wartosc elementu wstawianego: ";cin>>c;cout<<endl;B(head,b,c);}
else if (a=='c'){cout<<"podaj wartosc elementu po ktorym wstawic: ";cin>>b;cout<<endl;
cout<<"podaj wartosc elementu wstawianego: ";cin>>c;cout<<endl;C(head,b,c);}
else if (a=='e'){cout<<"podaj wartosc szukanego elementu: ";cin>>b;cout<<endl;E(head,b);}
else if (a=='f')F(head);
}
system("PAUSE");
return EXIT_SUCCESS;
}
Zadanie 2
#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
};
int main(int argc, char *argv[])
{
Lista* head = NULL;
Lista* headZas = new Lista;
Lista* first = new Lista;
int n = 10;
for(int i = 1 ; i <= n ; i++)
{
Lista* TMP = new Lista;
TMP->dana = i;
TMP->next = head;
head = TMP;
}
first = head;
cout<<"lista:"<<endl;
for(int i = 1 ; i <= n ; i++)
{
cout<<head->dana<<" ";
if (i == n) head->next = first; //lista staje sie cykliczna
head = head -> next;
}
head = first;
cout<<endl;
int k = 3;
double c=n;
int j = 0;
while (c > 1)
{
for(int i = 1; i<k;i++)
{
headZas = head;
head = head ->next;
}
headZas ->next = head -> next;
free(head);c--;
head = headZas;
cout<<"lista:"<<endl;
for(int i = 1 ; i <= n ; i++)
{
cout<<head->dana<<" ";
head = head -> next;
}
head = headZas;
head = head ->next;
cout<<endl;
}
cout<<"pozostala liczba:"<<endl;
cout<<head->dana<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Zadanie 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 AddToList1(Lista*& head, int Liczba1) //dodawanie elementu na poczatek listy
{
Lista* TMP = new Lista;
TMP->dana = Liczba1; //przesun stary pierwszy element
TMP->next = head;
head = TMP; //nowy 1-wszy element
}
void AddToList(Lista*& head, int Liczba1) //dodawanie elementu na poczatek listy
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
Lista* pom = new Lista;
first = head; //first = element pierwszy (head - czolowy)
while (head != NULL)
{
pom = head;
head = head -> next;
}
head = pom;
Lista* TMP = new Lista;
TMP->dana = Liczba1;
TMP->next = head->next;
head->next = TMP;
head = first;
}
void B(Lista*& head) //usun pierwszy el
{
int a = 0;
Lista* TMP = new Lista; //zmienna pomocnicza
TMP = head -> next;
free(head);
head = TMP;
}
void F(const Lista* head)
{
while (head !=NULL)
{
cout << head->dana << " ";
head = head->next;
}
}
int E(Lista*& head,int a) //przeszukanie listy w celu znalezienia wartosci - a
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
int j=0;
while (head != NULL)
{
if (head->dana == a)
{
cout<<"znaleziono na pozycji "<<j<<endl;
head = first;
return 0;
}
head = head->next;
j++;
}
cout<<"nie znaleziono"<<endl;
head = first;
return 0;
}
void C(Lista*& head)
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
int x = 0;
while (head != 0)
{
head = head -> next;
x++;
}
cout<<"lista ma "<<x<<" elementow"<<endl;
head = first;
}
void D(Lista*& head)
{
if(head == NULL)
cout<<"pusta"<<endl;
else cout<<"nie pusta"<<endl;
}
void Pisz()
{
cout<<endl;
cout<<"wprowadz znak:"<<endl;
cout<<"a - aby dodac element listy na koniec"<<endl;
cout<<"b - aby wykonac podpunkt b"<<endl;
cout<<"c - aby wykonac podpunkt c"<<endl;
cout<<"d - aby wykonac podpunkt d"<<endl;
cout<<"e - aby wykonac podpunkt e"<<endl;
cout<<"f - aby wykonac podpunkt f"<<endl;
cout<<"q - aby zakonczyc"<<endl;
cout<<endl;
}
int main(int argc, char *argv[])
{
Lista* head = NULL;
char a = ' ';
int b,c;
int empty = 0;
while(a!='q')
{
Pisz();
cin>>a;
cout<<endl;
if (a=='a'){cout<<"wprowadz liczbe: ";cin>>b;
if(empty == 0){empty++; AddToList1(head, b);}else {empty++;AddToList(head, b);}}
else if (a=='f')F(head);
else if (a=='b'){empty--; B(head);}
else if (a=='c')C(head);
else if (a=='d')D(head);
else if (a=='e'){cout<<"wprowadz wartosc: ";cin>>b;E(head,b);}
}
system("PAUSE");
return EXIT_SUCCESS;
}
Zadanie 4
#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
};
int D(Lista*& head)
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
first = head;
int x = 0;
while (head != 0)
{
head = head -> next;
x++;
}
cout<<"lista ma "<<x<<" elementow"<<endl;
head = first;
return x;
}
void Sort(Lista*& head)
{
Lista* pom = new Lista;
Lista* pom1 = new Lista;
Lista* first = new Lista;
Lista* TMP = new Lista;
first = head;
int n = D(head),x =0;
if (n>1){
for (int i = 0 ;i < n-1 ;i++)
{
TMP = head;
head = head -> next;
if (TMP->dana > head->dana)
{
x++;
TMP->next = head -> next;
head->next = TMP;
if (i==0) first = head ;
if (x>1)
{
pom1=head;
head = pom;
head->next = pom1;
head = pom1;
}
pom =head;
head = head->next;
}
}
}
head = first;
}
void AddToList1(Lista*& head, int Liczba1) //dodawanie elementu na poczatek listy
{
Lista* TMP = new Lista;
TMP->dana = Liczba1; //przesun stary pierwszy element
TMP->next = head;
head = TMP; //nowy 1-wszy element
Sort(head);
}
void AddToList(Lista*& head, int Liczba1) //dodawanie elementu na poczatek listy
{
Lista* first = new Lista; //zmienna pomocnicza przechowujaca wartosc elementu pierwszego
Lista* pom = new Lista;
first = head; //first = element pierwszy (head - czolowy)
while (head != NULL)
{
pom = head;
head = head -> next;
}
head = pom;
Lista* TMP = new Lista;
TMP->dana = Liczba1;
TMP->next = head->next;
head->next = TMP;
head = first;
Sort(head);
}
void C(Lista*& head) //usun pierwszy el
{
int a = 0;
Lista* TMP = new Lista; //zmienna pomocnicza
TMP = head -> next;
free(head);
head = TMP;
}
void E(const Lista* head)
{
while (head !=NULL)
{
cout << head->dana << " ";
head = head->next;
}
}
void Pisz()
{
cout<<endl;
cout<<"wprowadz znak:"<<endl;
cout<<"a - aby dodac element do kolejki"<<endl;
cout<<"c - aby wykonac podpunkt c"<<endl;
cout<<"d - aby wykonac podpunkt d"<<endl;
cout<<"e - aby wykonac podpunkt e"<<endl;
cout<<"q - aby zakonczyc"<<endl;
cout<<endl;
}
int main(int argc, char *argv[])
{
Lista* head = NULL;
char a = ' ';
int b,c;
int empty = 0;
while(a!='q')
{
Pisz();
cin>>a;
cout<<endl;
if (a=='a'){cout<<"wprowadz liczbe: ";cin>>b;
if(empty == 0){empty++; AddToList1(head, b);}else {empty++;AddToList1(head, b);}}
else if (a=='c'){empty--; C(head);}
else if (a=='d')D(head);
else if (a=='e')E(head);
}
system("PAUSE");
return EXIT_SUCCESS;
}