#include /* przyklad operacji na listach - tu sie uzywa jezyka C++ (nie C) - w przypadku j. C zamiast operatorow new/delete nalezy uzywac funkcji malloc()/free() */ struct Elem { int wartosc; Elem *nast; Elem *pop; }; struct Lista { Elem *glowa; Elem *ogon; }; void pokazListe(Lista *li) { Elem *x; if(li==0 || li->glowa==0) { printf("lista pusta\n"); return; } x=li->glowa; while(x) { printf("%d ", x->wartosc); x=x->nast; } printf("\n"); } int main() { Lista *li1; li1= new Lista(); // tworzymy zm. dynamiczna (obiekt) li1->glowa=0; // wypelniamy pola li1->ogon=0; pokazListe(li1); delete li1; // niszczymy zm. dyn. // --- Elem *e1, *e2, *e3; e1= new Elem(); e2= new Elem(); e3= new Elem(); li1= new Lista(); li1->glowa=e1; li1->ogon=e3; e1->wartosc=111; e1->pop=0; e1->nast=e2; e2->wartosc=222; e2->pop=e1; e2->nast=e3; e3->wartosc=333; e3->pop=e2; e3->nast=0; pokazListe(li1); li1->ogon=e2; // odcinamy ostatni element z listy... li1->ogon->nast=0; // lub e2->nast=0; pokazListe(li1); delete li1; delete e1; delete e2; delete e3; return 0; }