2010-12-07 16 views
3

Je dois écrire un programme C qui utilise une liste chaînée. J'ai créé une liste et ajouté des éléments à la liste. Mais je ne sais pas comment imprimer tous les éléments de la liste. La liste est une liste de chaînes. Je me suis dit que je devais d'une manière ou d'une autre incrémenter la liste, imprimant toutes les chaînes présentes, mais je n'arrive pas à trouver un moyen de le faire. Short: Comment imprimer un linked list?C, Imprimer la liste chaînée des chaînes

+3

Sons comme votre vraie question est "comment puis-je itérer une liste chaînée" - est-ce exact? – Cascabel

+3

Le suivi de la question de Jefromi est en deux parties: 1) Pouvez-vous imprimer le contenu du premier nœud et 2) pouvez-vous obtenir un lien vers le deuxième nœud? – dmckee

+1

Vraiment dépend de la structure de données que vous utilisez pour votre liste liée, pouvez-vous nous montrer votre code jusqu'à présent? Btw, si c'est devoirs, vous devriez marquer est comme tel. –

Répondre

10

Il n'y a pas de questions stupides . Voici quelques pseudo-code pour vous aider à démarrer:

def printAll (node): 
    while node is not null: 
     print node->payload 
     node = node->next 

printAll (head) 

C'est vraiment, il suffit de commencer au niveau du noeud de tête, l'impression de la charge utile et de passer au nœud suivant dans la liste.

Une fois que le prochain nœud est la fin de la liste, arrêtez.


Eh bien, en fait, il y a probablement sont, mais ce n'est pas un d'entre eux :-)

+0

Merci, je pense que j'ai une bonne idée de ce qu'il faut faire maintenant. –

0

Je ne suis pas sûr que ce soit ce que vous cherchez , mais généralement vous stockez dans votre DS, un pHead (qui est un pointeur sur le premier élément), et implémentez une fonction qui récupère l'adresse suivante du nœud de chaîne.

Vous faites cela jusqu'à ce que l'adresse suivante soit NULL (ce qui signifie que vous avez atteint votre queue).

3

Vous pouvez utiliser un pointeur pour parcourir la liste des liens. Code Pseudo:

tempPointer = head 

while(tempPointer not null) { 
    print tempPointer->value; 
    tempPointer = tempPointer->next; 
} 
1

code pseudo:

struct list 
{ 
    type value; 
    struct list* pNext; 
} 

void function() 
{ 
    struct list L; 
    // .. element to L 

    // Iterate each node and print 
    struct list* node = &L; 

    do 
    { 
    print(node->value) 
    node = node->next; 
    } 
    while(node != NULL) 
}