Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <time.h>
- #include <stdlib.h>
- #include <iostream>
- #include <conio.h>
- using namespace std;
- struct ELEMENT
- {
- int Wartosc;
- struct ELEMENT *Nastepny;
- };
- struct INFO
- {
- ELEMENT *Glowa;
- ELEMENT *Ogon;
- };
- void Do_Listy(INFO *Wsk, int L);
- void Tworz_Liste(INFO *Wsk, int n);
- void Pisz_Liste(INFO *Wsk);
- void Usun_Z_Listy(INFO *Wsk);
- void Usun_Liste(INFO *Wsk);
- int main()
- {
- srand(time(NULL));
- int n;
- INFO *Wsk;
- cout << "Podaj dlugosc listy: ";
- cin >> n;
- Wsk = new INFO;
- Tworz_Liste(Wsk, n);
- Pisz_Liste(Wsk);
- cout << "Lista po zmianach" << endl;
- Usun_Z_Listy(Wsk);
- Pisz_Liste(Wsk);
- Usun_Liste(Wsk);
- _getch();
- return 0;
- }
- void Do_Listy(INFO *Wsk, int L)
- {
- ELEMENT *Nowy;
- Nowy = new ELEMENT;
- if (Wsk->Glowa == NULL)
- {
- Wsk->Glowa = Nowy;
- Wsk->Ogon = Wsk->Glowa;
- }
- else
- {
- Wsk->Ogon->Nastepny = Nowy;
- Wsk->Ogon = Nowy;
- }
- Nowy->Wartosc = L;
- Nowy->Nastepny = NULL;
- }
- void Tworz_Liste(INFO *Wsk, int n)
- {
- int i, L;
- Wsk->Glowa = NULL;
- Wsk->Ogon = NULL;
- for (i = 1; i <= n; i++)
- {
- L = 1 + rand() % 50;
- Do_Listy(Wsk, L);
- }
- }
- void Pisz_Liste(INFO *Wsk)
- {
- ELEMENT *Biezacy;
- Biezacy = Wsk->Glowa;
- if (Wsk->Glowa == NULL)
- cout << "Lista jest pusta\n";
- else
- {
- cout << "\nOto lista:\n " << endl;
- while (Biezacy != NULL)
- {
- cout << Biezacy->Wartosc << endl;
- Biezacy = Biezacy->Nastepny;
- }
- }
- }
- void Usun_Z_Listy(INFO *Wsk)
- {
- ELEMENT *Biezacy,
- *Przed,
- *Po;
- int licznik = 0;
- Przed = NULL;
- bool Usuniety;
- Usuniety = false;
- Biezacy = Wsk->Glowa;
- if (Wsk->Glowa == NULL)
- cout << "\nLista jest pusta\n";
- else
- {
- do
- {
- if (licznik==3)
- {
- for (int i = 0; i < 3; i++)
- {
- Usuniety = true;
- if (Biezacy == Wsk->Glowa)
- {
- Wsk->Glowa = Wsk->Glowa->Nastepny;
- delete Biezacy;
- }
- else if (Biezacy == Wsk->Ogon)
- {
- Przed->Nastepny = NULL;
- delete Wsk->Ogon;
- Wsk->Ogon = Przed;
- }
- else
- {
- Po = Biezacy->Nastepny;
- delete Biezacy;
- Przed->Nastepny = Po;
- Biezacy = Po;
- }
- }
- }
- else
- {
- if (Biezacy != NULL)
- {
- Przed = Biezacy;
- Biezacy = Biezacy->Nastepny;
- licznik++;
- }
- }
- } while ((Biezacy != NULL) && (!Usuniety));
- }
- }
- void Usun_Liste(INFO *Wsk)
- {
- ELEMENT *Biezacy, *Usuniety;
- Biezacy = Wsk->Glowa;
- if (Wsk->Glowa == NULL)
- cout << "\nLista jest pusta";
- else {
- while (Biezacy != NULL)
- {
- Usuniety = Biezacy;
- Biezacy = Biezacy->Nastepny;
- delete Usuniety;
- }
- if (Biezacy == NULL)
- cout << "\nListe usunieto" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement