Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako vytvoriť Dvakrát - komunikačné zoznam v C Programovanie

Programátori používajú prepojené zoznamy ako lineárne pojazdný dátové štruktúry . To znamená , že programátor môže začať od začiatku zoznamu ( tzv. hlava ) a pohybovať sa vpred cez zoznamu jednu položku naraz . Tento spôsob ukladania dát taktiež umožňuje programátorovi efektívne pridať dáta do zoznamu , ktorý ponúka viac univerzálna alternatívu k niektorej iné dátové štruktúry , ako sú dynamické polia . Tento príklad ukazuje , ako vytvoriť jednoduchý dvojnásobne - komunikačné zoznam , ktorý umožňuje navigáciu zo zoznamu na dva smery ( dopredu a dozadu ) . Veci , ktoré budete potrebovať klipart Textový editor
C /C + + Compiler alebo IDE ( napríklad Microsoft Visual Studio )
Zobraziť ďalšie inštrukcie Cestuj 1

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 klipart

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äť .
2

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 .
3

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
4

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 .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené