Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<cstdlib>
- using namespace std;
- /*
- STRUKTURA TEJ LISTY JEDNOKIERUNKOWEJ OPIERA SIÊ NA IDEI "DWÓCH STRUKTUR":
- STRUKTURA 1. -> ODPOWIEDZIALNA ZA CA£¥ NASZ¥ LISTÊ
- STRUKTURA 2. -> JEST TO POJEDYÑCZY REKORD
- LISTA (TA DU¯A STRUKTURA), BÊDZIE SIÊ SK£ADAÆ Z MA£YCH ELEMENCIKÓW,
- TO JEST STRUKTUR TYPU 'osoba'
- LISTA BÊDZIE ZAWIERAÆ OPERACJE: DODAJ, USUÑ, WYŒWIETL
- */
- struct osoba
- {
- public:
- string imie;
- string nazwisko;
- string zawod;
- int wiek;
- int id;
- osoba *nastepna;
- osoba(); //konstruktor domyœlny
- };
- osoba::osoba()
- {
- nastepna = nullptr; //ustawiamy wskaznik na zero
- }
- struct lista
- {
- public:
- osoba *pierwsza;
- void dodaj_osobe();
- void usun_osobe();
- void wyswietl_osobe();
- void wyswietl_liste();
- void odwroc_liste();
- void zamien_rekordy();
- int liczba_osob();
- static int l_index;
- lista(); //konstruktor
- };
- lista::lista()
- {
- this->pierwsza = 0;
- }
- void lista::dodaj_osobe()
- {
- osoba *nowa = new osoba; //ODPOWIEDZIALNE ZA STWORZENIE NOWEGO ELEMENTU
- string imie, nazwisko, zawod;
- int wiek;
- cout<<"Podaj dane osoby w kolejnosci: IMIE NAZWISKO ZAWOD WIEK\n";
- cin >> imie >> nazwisko >> zawod >> wiek ;
- //RZECZ PIERWSZORZÊDNA - WYPE£NIAMY NASZĄ NOWĄ OSOBÊ PODANYMI DANYMI
- l_index++;
- nowa->imie = imie;
- nowa->nazwisko = nazwisko;
- nowa->zawod = zawod;
- nowa->wiek = wiek;
- nowa->id = l_index;
- if(pierwsza == 0) //sprawdzamy, czy to jest pierwszy element listy
- {
- pierwsza = nowa;
- }
- else
- {
- //W PRZECIWNYM RAZIE IDZIEMY NA KONIEC LISTY, EZLIFE
- osoba *temp = pierwsza;
- while(temp->nastepna)
- {
- temp = temp->nastepna; //znajdujemy wskaznik na ostatni element
- }
- temp->nastepna = nowa;
- nowa->nastepna = 0;
- }
- }
- void lista::wyswietl_osobe()
- {
- int id;
- bool flag = false;
- cout<<"Podaj ID osoby, ktorej dane maja zostac wyswietlone, moze znajduje sie w rejestrze\n";
- cin >> id;
- osoba *temp = pierwsza;
- while(temp)
- {
- if(temp->id == id)
- {
- cout<<"Nr ID: " << temp->id << endl;
- cout<<"Imie: "<<temp->imie << endl;
- cout<<"Nazwisko: "<<temp->nazwisko << endl;
- cout<<"Lat: "<<temp->wiek << endl;
- cout<<"Zawod: "<<temp->zawod << endl;
- flag = true;
- }
- temp = temp->nastepna; //ustawiamy wskaznik na nastepna osobe
- }
- if(flag == false) cout<<"Nie ma osoby w rejestrze!\n";
- }
- void lista::wyswietl_liste()
- {
- // wskaznik na pierwsza osobe
- osoba *temp = pierwsza;
- while(temp) //dopoki cos sie znajduje w tej liscie
- { cout<<"Nr ID: " << temp->id << endl;
- cout<<"Imie: "<<temp->imie << endl;
- cout<<"Nazwisko: "<<temp->nazwisko << endl;
- cout<<"Lat: "<<temp->wiek << endl;
- cout<<"Zawod: "<<temp->zawod << endl;
- temp = temp->nastepna; //ustawiamy wskaznik na nastepna osobe - proste ;D
- }
- }
- void lista::usun_osobe()
- {
- int nr;
- cout<<"Podaj nr ID osoby, ktora ma zostac usunieta z listy:\n"<<endl;
- cin >> nr;
- if(nr == 0)
- {
- osoba *temp = pierwsza;
- pierwsza = temp->nastepna;
- }
- if(nr >= 1)
- {
- int k = 0;
- osoba *temp = pierwsza;
- while(temp)
- {
- if((k+1) == nr) break; //Jezeli znalazlo, to przerywamy
- temp = temp->nastepna; //Jezeli nie znalazlo, to przewijamy listê dalej
- k++;
- }
- //TUTAJ SPRAWDZAMY JESZCZE, CZY TEN ELEMENT NIE JEST OSTATNI
- //JEŚLI JEST, TO WSKAZNIK NA NEXT OSPBĘ JEST ROWNY ZERO
- if(temp->nastepna->nastepna == 0)
- temp->nastepna = 0;
- //JEZELI NIE BYL TO OSTATNI ELEMENT
- else temp->nastepna = temp->nastepna->nastepna;
- }
- }
- int lista::liczba_osob()
- {
- int g = 0;
- osoba *temp = pierwsza;
- while(temp)
- {
- g++;
- temp = temp->nastepna;
- }
- return g;
- }
- int lista::l_index = 0;
- int main()
- {
- char g;
- lista *baza = new lista;
- do{
- cout<<"Co chcesz zrobic?\n";
- cout<<"[1]Dodaj osobe\n[2]Wyswietl osobe(ID required)\n[3]Wyswietl cala liste\n[4]Usun osobe(ID required)\n[9]KONIEC\n";
- cin >> g;
- switch(g)
- {
- case '1':
- baza->dodaj_osobe();
- break;
- case '2':
- baza->wyswietl_osobe();
- break;
- case '3':
- baza->wyswietl_liste();
- break;
- case '4':
- baza->usun_osobe();
- break;
- case '9':
- cout<<"Koniec programu. ELKO ziomek!\n";
- break;
- default:
- cout<<"Wybierz odpowiednią akcję ziomek!\n";
- break;
- }
- }while(g!='9');
- delete baza;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement