Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Vytvorte štruktúru uzla , ktorý bude slúžiť ako dátový typ prepojeného zoznamu . V textovom editore , zadajte nasledujúci kód : Spojené
 # include   int main { klipart   struct listNode { klipart   int údaje ;   vzpera listNode * predchádzajúce ;   vzpery listNode * ďalšie ;   } ;   return 0 ;   }   " struct listNode " blok kódu vytvorí šablónu pre položky, ktoré naplní zoznam . Táto šablóna definuje listNode ako obsahujúce tri prvky : položky dát ( integer ) a odkazy na ďalšie a predchádzajúcej položky v zozname. Ukazovateľ je premenná , ktorá je držiteľom adresu v pamäti . Ukazovatele sú používané sa odkazovať na iné dátové štruktúry v hlbokej pamäti a pri spustení kódu dynamicky alokovať pamäť .   deklarovať premenné , ktoré sa organizujú štruktúru zoznamu . Vložte tento príklad kódu do textového súboru :   int size ;   listNode * hlava ;   listNode * chvost ;   chvost = hlava ;   hlava = chvost ,   Tieto dva ukazovatele sú začiatok a koniec zoznamu , resp . Pomocou týchto ukazovateľov , programátor vie , kde na začiatku zoznamu a kde koniec je jednoducho skontrolovať , či je aktuálny uzol je " hlava " alebo ukazovateľ " chvost " . Obaja odkazujú späť na seba v prípade prázdneho zoznamu .   Vytvoriť jednoduchý algoritmus pre pridanie položky z prepojeného zoznamu . Nasledujte tento príklad kódu :   void pridávací ( int num ) {   struct listNode * stopovacie = hlava ;   struct listNode * newnode = ( struct listNode * ) malloc ( sizeof ( struct listNode ) ) ;   newnode - > data = num ;   if ( hlava == NULL ) {   hlava = newnode ;   tail = newnode ;   newnode - > prev = hlava ;   newnode - > next = chvost ,   }   else {   while ( tracer - > next = chvost ! )   { stopovacie = tracer - > ďalšie ; }   newnode - > prev = stopovacie ;   newnode - > next = chvost ,   tracer - > next = node ;   chvost = node ;   }   veľkosť + + ;   }   Tento kód pridá uzol na konci zoznamu . Začína tým , že vytvorí ukazovateľ na začiatku zoznamu ( " stopovacie " ) . Potom sa vytvorí ukazovateľ na dynamicky alokovanej bloku pamäte vyhradenej pre novo vytvorené listNode ( newnode ) a nastaví dáta tohto uzla na celé číslo " num " . Keď je hlava ukazuje na NULL ( čo znamená , že zoznam je prázdny , pretože hlava smeruje k ničomu ) , potom kód vloží uzol na začiatku zoznamu . V opačnom prípade , " zatiaľ čo " cykly slučky cez uzly v zozname , až sa dostane na posledný uzol . Je - li " tracer " odkazuje na posledný prvok zoznamu , kód vloží uzol . Konečný príkaz pridá na " veľkosť " celé číslo , sledovanie prvkov v zozname   Vytvorte algoritmus pre odstránenie a položka z konca zoznamu : .   void removeNode ( ) {   if ( tail = hlava ! ) {   struct listNode * Koniec = chvost ,   chvost = tail - > predchádzajúca ;   zdarma ( koniec ) ;   veľkosť - ;   }   }   Tento kód vytvorí ukazovateľ ( " koniec " ) na poslednú prvok zoznamu ( rovnaký prvok " chvost " odkazuje ) . Potom , chvost je nastavená na bod na prvku bezprostredne pred posledným prvku ( uzol , na ktorý ukazuje " prev " ukazovateľ na posledný prvok ) . Konečne , pamäť používaná posledný uzol , odvolával sa na " koniec " , je uvoľnená pre ďalšie použitie . 
 
 
 
 
 
 
 2 
 
 
 
 
 
 
 3 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 4