Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come creare una lista doppiamente collegata in C Programmazione

programmatori usano liste collegate a strutture di dati linearmente attraversabili . Ciò significa che il programmatore può cominciare dall'inizio della lista (chiamato testa ) e spostare in avanti la lista di un elemento alla volta. Questo metodo di memorizzazione dei dati consente inoltre al programmatore di aggiungere efficientemente dati all'elenco , offrendo una più versatile alternativa ad alcune altre strutture di dati come array dinamici . Questo esempio mostra come costruire una semplice lista doppiamente collegata , che permette la navigazione della lista su due direzioni ( avanti e retromarcia) . Cose che ti serviranno
Text Editor
C /C + + Compiler o IDE ( ad esempio Microsoft Visual Studio ) economici Show More Istruzioni
1

creare la struttura del nodo che servirà come il tipo di dati della lista collegata . Nel editor di testo , inserire il seguente codice :

# include

int main {

struct listNode {
dati int

;

puntone listNode * prec ;

puntone listNode * prossimo ;

} ;

return 0; }


"struct listNode " blocco di codice crea un modello per gli elementi che andranno a popolare la lista . Questo modello definisce un listNode come contenente tre elementi: un elemento di dati ( un intero) e dei riferimenti a precedenti e successivi elementi nell'elenco . Un puntatore è una variabile che contiene un indirizzo di memoria . I puntatori sono utilizzati per fare riferimento ad altre strutture di dati in memoria profonda e per allocare dinamicamente la memoria durante l' esecuzione di codice .
2

dichiarare le variabili che organizzeranno la struttura della lista . Inserire questo codice di esempio nel file di testo :

dimensioni int ;

listNode * testa ;

listNode * coda;

coda = testa ;

testa = coda ;

Questi due indicatori sono l'inizio e la fine della lista , rispettivamente . Utilizzando questi puntatori , il programmatore sa dove l'inizio della lista è e dove la fine è , semplicemente controllando se il nodo corrente è la "testa" o pointer "coda " . Entrambi rimandano l'un l'altro in caso di una lista vuota .
3

Crea un algoritmo semplice per aggiungere elementi dalla lista collegata . Segui questo codice di esempio :

vuoto append ( int num) {

struct listNode * tracciante = testa ;

struct listNode * newNode = ( struct listNode * ) malloc ( sizeof ( struct listNode ) ) ;

newNode - > data = num;

if ( testa == NULL) {

testa = newNode ;

coda = newNode ;

newNode - > prev = testa ;

newNode - > next = coda;

}

else {

mentre ( tracciante - > next = coda! ) per

{ tracciante = tracciante - > next ; }

newNode - > prev = tracciante ;

newNode - > next = coda;

tracciante - > next = nodo ;

coda = nodo ;

}
dimensione

+ + ;

}

Questo codice aggiunge un nodo alla fine della lista . Si inizia con la creazione di un puntatore alla testa della lista ( " tracer " ) . Poi , si crea un puntatore a un blocco allocato dinamicamente di memoria riservata per un listNode appena creato ( newNode ) e imposta i dati di quel nodo al numero intero " num" . Se i punti della testa a NULL ( cioè l'elenco è vuoto , perché i punti di testa per niente ), seguito, il codice inserisce il nodo all'inizio della lista . In caso contrario , i " mentre" cicli di loop attraverso i nodi della lista fino a raggiungere l' ultimo nodo . Quando " traccianti " punti per l'ultimo elemento della lista , il codice inserisce il nodo . Il comando finale si aggiunge alla "dimensione" intero, tenendo traccia degli elementi nella lista
4

Crea un algoritmo per rimuovere ed elemento dalla fine della lista : .

vuoto removeNode ( ) {

if ( coda = testa! ) {

struct listNode * = fine della coda ;

coda = tail - > prev ;

libero (fine) ;
dimensione

- ;

}

}

Questo codice crea un puntatore ( " end ") per l'ultimo elemento della lista (l'elemento stesso " coda " punti a ) . Poi , coda è impostata per puntare all'elemento immediatamente prima dell'ultimo elemento ( il nodo puntato dal puntatore " prev " dell'ultimo elemento ) . Infine , la memoria utilizzata da ultimo nodo , a cui si riferisce "fine" , è liberato per un ulteriore uso .

 

Programmazione © www.354353.com