Domanda

Qualcuno può spiegare questo?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

Questo è un codice per l'immissione di dati nell'elenco collegato tramite il linguaggio C. Il codice non è completo, ma penso che sia abbastanza per lo scopo. Spiega la codifica in sostanza queste righe:

 temp=malloc(sizeof(struct node));

e

 temp->link = list;
 list=temp;.
È stato utile?

Soluzione

malloc () è usato per allocare memoria - in questo caso per un nuovo nodo.

La funzione addbeg () definita nel tuo codice effettua le seguenti operazioni:

  1. Definisce una variabile temporanea x .
  2. Alloca lo spazio per un nuovo nodo.
  3. Immette un numero intero (% d in scanf ) e lo memorizza in x .
  4. Memorizza il valore che è stato salvato in x nel campo dati del nodo appena allocato.
  5. Memorizza la vecchia "testa" dell'elenco indicato dalla variabile " list " come collegamento nel nodo appena assegnato.
  6. Imposta il nuovo nodo come nuovo capo dell'elenco memorizzato nella variabile " list ".

È un'implementazione di base di un elenco collegato ( http://en.wikipedia.org/wiki / Linked_list ) di numeri interi.

Altri suggerimenti

prima riga: alloca memoria per un singolo nodo aggiuntivo dell'elenco.

seconda riga: collega l'elenco corrente come continuazione dopo questo elemento.

terza riga: imposta l'elemento corrente all'inizio di un elenco.

temp e list non sono visibili in addbeg, poiché sono dichiarati in main. Devono essere passati in addbeg o dichiarati al di fuori del main (globale, yuck).

malloc alloca lo spazio per un nuovo nodo.

temp->link = list

e

list = temp

rende quel nuovo nodo il capo della tua lista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top