Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include <conio.h>
- #include<string>
- #include<iomanip>
- using namespace std;
- struct dane {
- string nazwisko;
- string imie;
- int wynik;
- };
- typedef struct rob {
- dane element;
- struct rob * nastepny;
- } elem;
- typedef struct {
- elem * glowa;
- elem * ogon;
- } wskaznik;
- wskaznik wsk;
- void podaj_dane(dane & element)
- {
- cout <<"podaj nazwisko ";
- cin >> element.nazwisko;
- cout << "\n";
- cout << "podaj imie ";
- cin >> element.imie;
- cout << "\n";
- cout << "podaj wynik ";
- cin >> element.wynik;
- cout << "\n";
- }
- void wypisz_dane(dane element)
- {
- cout <<left<< setw( 12)<<element.nazwisko;
- cout << "\t";
- cout << left<< setw( 10)<<element.imie;
- cout << "\t";
- cout << element.wynik;
- cout << "\n";
- }
- void doloz_do_listy( dane element) {
- dane el;
- podaj_dane( el);
- elem * q=new(elem);
- q->element=el;
- q->nastepny=NULL;
- if (wsk.glowa==NULL) wsk.glowa=wsk.ogon=q;
- else {
- wsk.ogon->nastepny=q;
- wsk.ogon=q;
- }
- }
- void wstaw_do_kolejki( dane element) {
- dane el;
- podaj_dane( el);
- elem * q=new(elem);
- q->element=el;
- q->nastepny=NULL;
- if (wsk.glowa==NULL) wsk.glowa=wsk.ogon=q;
- else {
- wsk.ogon->nastepny=q;
- wsk.ogon=q;
- }
- }
- void poloz_na_stos( dane & element) {
- dane el;
- elem *p;
- p=wsk.glowa;
- podaj_dane( el);
- elem * q=new(elem);
- if(wsk.glowa==NULL)wsk.glowa=wsk.ogon=q;
- q->element=el;
- q->nastepny=p;
- wsk.glowa=q;
- }
- void zdejmij_ze_stosu( dane & element) {
- elem * q;
- dane el;
- el=wsk.glowa->element;
- q=wsk.glowa;
- wsk.glowa=q->nastepny;
- delete(q);
- cout<<"zdjeto ze stosu "<<"\n";
- wypisz_dane(el);
- }
- void usun_z_kolejki( dane & element) {
- elem * q, * p;
- dane el;
- el=wsk.glowa->element;
- p=wsk.glowa->nastepny;
- q=wsk.glowa;
- wsk.glowa=p;
- delete(q);
- cout<<"usunieto z kolejki "<<"\n";
- wypisz_dane(el);
- }
- void wypisz_liste() {
- dane el;
- elem * q=wsk.glowa;
- cout << "oto aktualny stan"<<"\n";
- if (wsk.glowa==NULL) cout << "lista pusta"<<"\n";
- else
- while(q!=NULL) {
- el=q->element;
- wypisz_dane(el);
- q=q->nastepny;
- }
- }
- int oblicz_rozmiar() {
- int roz=0;
- elem * q=wsk.glowa;
- if (wsk.glowa==NULL) roz=0;
- else
- while (q!=NULL) {
- roz=roz+1;
- q=q->nastepny;
- }
- return roz;
- }
- void wstaw_do_listy_za() {
- int k;
- do {
- cout<<"podaj nr elementu za który wstawic element"<<"\n";
- cin >>k;
- } while(oblicz_rozmiar()<k);
- dane el;
- podaj_dane(el);
- int j=0;
- elem * q=new(elem);
- elem * p=wsk.glowa;
- q->element=el;
- if (oblicz_rozmiar()==0) {
- wsk.glowa=q;
- wsk.ogon=q;
- q->nastepny=NULL;
- } else {
- if (k==1) {
- q->nastepny=p->nastepny;
- p->nastepny=q;
- } else if ((oblicz_rozmiar()==k) && (k!=0)) {
- p=wsk.ogon;
- p->nastepny=q;
- q->nastepny=NULL;
- wsk.ogon=q;
- } else {
- p=wsk.glowa;
- j=2;
- p=p->nastepny;
- while (j<k) {
- j=j+1;
- p=p->nastepny;
- }
- q->nastepny=p->nastepny;
- p->nastepny=q;
- }
- }
- }
- void wstaw_do_listy_kolejny() {
- dane el;
- podaj_dane(el);
- elem *q=new(elem);
- q->element=el;
- if (wsk.glowa==NULL) {
- wsk.glowa=wsk.ogon=q;
- q->nastepny=NULL;
- } else {
- elem *przed=NULL,*po=wsk.glowa;
- enum {SZUKAJ,ZAKONCZ} stan=SZUKAJ;
- while ((stan==SZUKAJ) && (po!=NULL))
- if (po->element.wynik>=el.wynik)
- stan=ZAKONCZ;
- else {
- przed=po;
- po=po->nastepny;
- }
- if (przed==NULL) {
- wsk.glowa=q;
- q->nastepny=po;
- } else if (po==NULL) {
- wsk.ogon->nastepny=q;
- q->nastepny=NULL;
- wsk.ogon=q;
- } else {
- przed->nastepny=q;
- q->nastepny=po;
- }
- }
- }
- void wstaw_do_listy_na_koniec() { // dolaczamy rekord na koniec listy
- dane el;
- elem *q=new(elem);
- podaj_dane(el);
- q->element=el;
- q->nastepny=NULL;
- if (wsk.glowa==NULL) // lista pusta
- wsk.glowa=wsk.ogon=q;
- else { // coœ jest w liscie
- (wsk.ogon)->nastepny=q;
- wsk.ogon=q;
- }
- }
- void usun_z_listy_pierwszy( dane & element) {
- elem * q, * p;
- dane el;
- el=wsk.glowa->element;
- p=wsk.glowa->nastepny;
- q=wsk.glowa;
- wsk.glowa=p;
- delete(q);
- cout<<"usunieto z listy "<<"\n";
- wypisz_dane(el);
- }
- void wypisz_opcje_menu_stosu() {
- cout<<"Opcje stosu \n";
- cout<<"1.Poloz na stos element \n";
- cout<<"2.Zdejmij ze stosu element \n";
- cout<<"3.Wypisz stos \n";
- cout<<"4.Oblicz rozmiar stosu \n";
- cout<<"5.Wyjscie \n";
- }
- void wypisz_opcje_menu_kolejki() {
- cout<<"Opcje stosu \n";
- cout<<"1.Dolacz dokolejki element \n";
- cout<<"2.Usun z kolejki element \n";
- cout<<"3.Wypisz kolejke \n";
- cout<<"4.Oblicz rozmiar kolejki \n";
- cout<<"5.Wyjscie \n";
- }
- void wypisz_opcje_menu_lista() {
- cout<<"Opcje listy \n";
- cout<<"1.Dolacz do listy element na koniec \n";
- cout<<"2.Usun z listy element pierwszy \n";
- cout<<"3.Wypisz liste \n";
- cout<<"4.Oblicz rozmiar listy \n";
- cout<<"5. Wstaw do listy za\n";
- cout<<"6. Wstaw do listy w kolejnoœci wyniku \n";
- cout<<"7.Wyjscie \n";
- }
- void wypisz_opcje_menu() {
- cout<<"Struktury listowe \n";
- cout<<"1.Stosy \n";
- cout<<"2.Kolejki \n";
- cout<<"3.Listy \n";
- cout<<"4.koniec \n";
- }
- int main() {
- int k,n,opc;
- wskaznik wsk;
- dane element;
- char opcja;
- bool koniec=true;
- while(1) {
- koniec=true;
- wypisz_opcje_menu();
- cin>>opc;
- switch(opc) {
- case 1:
- while(koniec)
- {
- wypisz_opcje_menu_stosu();
- cin>>opcja;
- switch(opcja) {
- case '1':
- cout<<"Podaj liczbe elemantow \n";
- cin>>n;
- for (int i=1; i<=n; i++) poloz_na_stos(element);
- break;
- case '2':
- zdejmij_ze_stosu(element);
- break;
- case '3':
- wypisz_liste();
- break;
- case '4':
- cout<<"rozmiar stosu "<<oblicz_rozmiar()<<" \n";
- break;
- case '5':
- koniec=false;
- break;
- }
- }
- break;
- case 2:
- while(koniec) {
- wypisz_opcje_menu_kolejki();
- cin>>opcja;
- switch(opcja) {
- case '1':
- cout<<"Podaj liczbe elemantow \n";
- cin>>n;
- for (int i=1; i<=n; i++) wstaw_do_kolejki(element);
- break;
- case '2':
- usun_z_kolejki(element);
- break;
- case '3':
- wypisz_liste();
- break;
- case '4':
- cout<<"rozmiar kolejki "<<oblicz_rozmiar()<<" \n";
- break;
- case '5':
- koniec=false;
- break;
- }
- }
- break;
- case 3:
- while(koniec) {
- wypisz_opcje_menu_lista();
- cin>>opcja;
- switch(opcja) {
- case '1':
- cout<<"Podaj liczbe elemantow \n";
- cin>>n;
- for (int i=1; i<=n; i++) wstaw_do_listy_na_koniec();
- break;
- case '2':
- usun_z_listy_pierwszy(element);
- break;
- case '3':
- wypisz_liste();
- break;
- case '4':
- cout<<"rozmiar kolejki "<<oblicz_rozmiar()<<" \n";
- break;
- case '5':
- wstaw_do_listy_za();
- break;
- case '6':
- wstaw_do_listy_kolejny();
- break;
- case '7':
- koniec=false;
- break;
- }
- }
- break;
- case 4:
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement