Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- using namespace std;
- struct student
- {
- char Nazwisko[100];
- char Imie[100];
- };
- struct lista_studentow
- {
- lista_studentow *sa_up;
- student sa;
- lista_studentow *sa_down;
- };
- void dane_studenta(lista_studentow &st)
- {
- cout<<"Podaj nazwisko studenta: ";
- cin>>st.sa.Nazwisko;
- cout<<"Podaj imie studenta: ";
- cin>>st.sa.Imie;
- }
- void dodaj_studenta(lista_studentow **sa)
- {
- lista_studentow *as=*sa;
- if(*sa>0)
- {
- lista_studentow *nsa = new lista_studentow;
- dane_studenta(*nsa);
- while(as->sa_down){as = as->sa_down;}
- nsa->sa_up = as;
- nsa->sa_down = 0;
- as->sa_down = nsa;
- }
- else
- {
- *sa = new lista_studentow;
- dane_studenta(**sa);
- (*sa)->sa_up = nullptr;
- (*sa)->sa_down = nullptr;
- }
- }
- void usun_studenta(lista_studentow **sa , int numerek)
- {
- cout<<"Wybierz indeks studenta ktorego chcesz usunac : ";
- cin>>numerek;
- if(*sa && numerek >= 0)
- {
- lista_studentow *kopia=*sa;
- for(int i=1 ; i<=numerek ; i++)
- {
- kopia = kopia->sa_down;
- }
- if(!kopia->sa_up && !kopia->sa_down)
- {
- delete kopia;
- *sa = 0;
- }
- else if(numerek ==0)
- {
- *sa = (*sa)->sa_down;
- delete kopia;
- kopia =0;
- }
- else if(kopia->sa_up && kopia->sa_down)
- {
- kopia->sa_up->sa_down = kopia->sa_down;
- kopia->sa_down->sa_up = kopia->sa_up;
- delete kopia;
- kopia = 0;
- }
- else if (!kopia->sa_down)
- {
- kopia->sa_up->sa_down = 0;
- delete kopia;
- kopia =0;
- }
- }
- }
- void wypisanie_studenta(lista_studentow *sa)
- {
- if(sa)
- {
- cout<<"=========================================================\n";
- // cout<<sa<<endl;
- do
- {
- cout<<"Imie : "<<sa->sa.Imie<<endl;
- cout<<"Nazwisko : "<<sa->sa.Nazwisko<<endl;
- cout<<"=========================================================\n";
- sa = sa->sa_down;
- }while(sa);
- }
- }
- int main()
- {
- lista_studentow *sa=0;
- int x;
- char c;
- while(true)
- {
- cout<<"[1] Dodaj studenta"<<endl;
- cout<<"[2] Wypisz studentow"<<endl;
- cout<<"[3] Usun studenta"<<endl;
- cout<< "[q]/[Q] Wyjscie"<<endl;
- char wybor;
- cin>>wybor;
- if (wybor=='q' || wybor=='Q')
- exit(0);
- else
- {
- switch(wybor)
- {
- case '1': dodaj_studenta(&sa);
- break;
- case '2': wypisanie_studenta(sa);
- break;
- case '3': usun_studenta(&sa,x);
- break;
- }
- }
- cout<<endl;
- }
- // do
- // {
- // cout<<"[1] Dodaj studenta"<<endl;
- // cout<<"[2] Wypisz studenta"<<endl;
- // cout<<"[3] Usun studenta o indeksie podanym w kodzie programu"<<endl;
- // int a;
- // cin>>a;
- // switch(a)
- // {
- // case 1:
- // dodaj_studenta(&sa);
- // break;
- // case 2:
- // wypisanie_studenta(sa);
- // break;
- // case 3:
- // usun_studenta(&sa,x);
- // break;
- // default:
- // break;
- // }
- // cout<< "[q]/[Q] Wyjscie"<<endl;
- //
- // cin>>c;
- // }while(c!='q' || c!='Q');
- }
- // za pomoca operatora new
- // wszystkie operacje w osobnej liscie
- // dwa dodatkwoe wskazniki ktore beda pokazywac na poczatek listy i na koniec
- // wyswietanie w lewo i wyswietlanie w prawo
- // pierwszy element nie ma poprzednika
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement