遍历链表

use*_*568 0 c linked-list data-structures

#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;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如标题所暗示的那样,我试图遍历一个链表,itteratively预期输出为0 1..9,观察到的输出是:9代码有什么问题?

jon*_*ins 6

list创建它之后,您没有指向下一个节点,因此您每次都只是覆盖前一个节点.试试这个:

for(i=0;i<10;i++)
{
    list->item = i;
    list->link = (struct node *)malloc(sizeof(struct node));
    list = list->link;
}
Run Code Online (Sandbox Code Playgroud)