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