portal Michała Hanćkowiaka
Begin main content
#include <stdio.h>

/* 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;
}

uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...