#include #include #include #include struct Punkt { double x,y; }; struct Wezel { Punkt P; char *Nazwa; Wezel *Nastepny; }; struct Kolejka { Wezel *Pierwszy; Wezel *Ostatni; }; void Init(Kolejka &K) { K.Pierwszy=0; K.Ostatni=0; } void Dodaj(Kolejka &K,double x,double y,const char *Nazwa) { Wezel *Nowy=new Wezel; Nowy->P.x=x; Nowy->P.y=y; int Dlugosc=strlen(Nazwa)+1; Nowy->Nazwa=new char[Dlugosc]; memcpy(Nowy->Nazwa,Nazwa,Dlugosc); Nowy->Nastepny=0; if(K.Ostatni) K.Ostatni->Nastepny=Nowy; else K.Pierwszy=Nowy; K.Ostatni=Nowy; } void Skasuj(Kolejka &K) { Wezel *Stary=K.Pierwszy; assert(Stary); K.Pierwszy=Stary->Nastepny; if(!K.Pierwszy) K.Ostatni=0; delete[] Stary->Nazwa; delete Stary; } void Wyczysc(Kolejka &K) { // while(K.Pierwszy) Skasuj(K); while(K.Pierwszy) { Wezel *Stary=K.Pierwszy; K.Pierwszy=Stary->Nastepny; delete[] Stary->Nazwa; delete Stary; } K.Ostatni=0; } void Drukuj(const Kolejka &K) { for(Wezel *i=K.Pierwszy;i;i=i->Nastepny) { cout<P.x<<','<P.y<<' '<Nazwa<P; return(K.Pierwszy->Nazwa); } void Pobierz(const Kolejka &K,double &X,double &Y,const char *&Nazwa) { assert(K.Pierwszy); X=K.Pierwszy->P.x; Y=K.Pierwszy->P.y; Nazwa=K.Pierwszy->Nazwa; } int main() { Kolejka K; Init(K); Dodaj(K,0,0,"Abc"); Dodaj(K,3.5,15.5,"Warszawa"); Dodaj(K,5.8,23.3,"Krakow"); if(!CzyPusta(K)) Skasuj(K); Drukuj(K); Punkt P; const char *Nazwa=Pobierz(K,P); cout<<"Pierwsze miasto:"<