/* primer38.c - implementacija liste preko pokazivaca */ #include #include // def. malloc, free, NULL /* Implementacija strukture */ #define new(X) (X*) malloc( sizeof( X ) ) typedef char Element; // lista elemenata typedef struct celija Celija; // Celija je struktura typedef Celija* Index; // Celija ima indeks typedef Index Lista; // Lista je indeks typedef struct celija { Element Sadrzaj; Index sled; }; /*--------------------------------------------------------------------*/ /* Prototipovi */ Lista NapraviListu( void ); // inicijalizacija liste Lista Dodaj( Element x, Lista a ); // umetanje elementa x na pocetak liste a Lista Izbaci( Element x, Lista a ); // izbacivanje elementa x iz a void main(){ Lista a; a = NapraviListu(); Dodaj( 'B', a ); Dodaj( 'X', a ); } /*--------------------------------------------------------------------*/ Lista NapraviListu( void ) { // Vraca praznu listu return NULL; // Tradicionalno, 0 je ovde NULL } /*--------------------------------------------------------------------*/ Lista Dodaj( Element x, Lista a ) { Index b; b = new(Celija); b -> Sadrzaj = x; b -> sled = a; return b; } /*--------------------------------------------------------------------*/ Lista Izbaci( Element x, Lista a ){ Index b; if( a == 0 ) return a; if( a -> Sadrzaj == x ) { b = a -> sled; free( a ); // free umesto Oslobodi return b; } else { a -> sled = Izbaci( x, a -> sled ); return a; } }