Die Traversierung durch eine verknüpfte Liste
#include<stdio.h>
struct node
{
int item;
struct node *link
};
main()
{
struct node *start,*list;
int i;
start = (struct node *)malloc(sizeof(struct node));
list = start;
start->link = NULL;
for(i=0;i<10;i++)
{
list->item = i;
list->link = (struct node *)malloc(sizeof(struct node));
}
list->link = NULL;
while(start != NULL)
{
printf("%d\n",start->item);
start = start->link;
}
}
Als der Titel suggeriert, in das ich versuche zu durchqueren, durch eine verknüpfte Liste itteratively
die erwartete Ausgabe ist
0
1
.
.
9
und der beobachteten Ausgabe : 9
Was ist falsch an dem code ?
- in deiner for-Schleife, wo du den Speicher vergessen haben, fügen Sie eine weitere Anweisung
list = list->link
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es nur weil der eine Anweisung in Ihren code.
Sie vergessen haben, zeigen Sie auf den nächsten link, wenn Sie versucht zu vergeben der neue link.
Da waren Sie die Zuweisung nur auf einen Zeiger, so dass Speicherverlust.
Du nicht zeigen
list
an den nächsten Knoten, nachdem Sie es schaffen, so sind Sie nur überschreiben den vorherigen Knoten jedes mal. Versuchen Sie dies: