遍历链表 #包括 结构节点 { 国际项目; 结构节点*链接 }; main() { 结构节点*开始,*列表; int i; start=(结构节点*)malloc(sizeof(结构节点)); 列表=开始; 开始->链接=NULL; 对于(i=0;iitem=i; 列表->链接=(结构节点*)malloc(sizeof(结构节点)); } 列表->链接=NULL; while(开始!=NULL) { printf(“%d\n”,开始->项目); 开始=开始->链接; } }

遍历链表 #包括 结构节点 { 国际项目; 结构节点*链接 }; main() { 结构节点*开始,*列表; int i; start=(结构节点*)malloc(sizeof(结构节点)); 列表=开始; 开始->链接=NULL; 对于(i=0;iitem=i; 列表->链接=(结构节点*)malloc(sizeof(结构节点)); } 列表->链接=NULL; while(开始!=NULL) { printf(“%d\n”,开始->项目); 开始=开始->链接; } },c,data-structures,linked-list,C,Data Structures,Linked List,正如这篇文章的标题所暗示的,我正试图通过一个链接列表进行遍历 预期产量为 0 1. . . 9 观测输出为:9 代码有什么问题?这只是因为代码中有一条语句。 当您尝试分配新链接时,忘记指向下一个链接。 因为您只在一个指针上分配,所以内存泄漏 #include<stdio.h> struct node { int item; struct node *link }; main() { struct node *start,*list; int i;

正如这篇文章的标题所暗示的,我正试图通过一个链接列表进行遍历 预期产量为 0 1. . . 9 观测输出为:9
代码有什么问题?

这只是因为代码中有一条语句。 当您尝试分配新链接时,忘记指向下一个链接。 因为您只在一个指针上分配,所以内存泄漏

#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;
    }
}
#包括
结构节点
{
国际项目;
结构节点*链接
};
main()
{
结构节点*开始,*列表;
int i;
start=(结构节点*)malloc(sizeof(结构节点));
列表=开始;
开始->链接=NULL;
对于(i=0;iitem=i;
列表->链接=(结构节点*)malloc(sizeof(结构节点));
列表=列表->链接;
}   
列表->链接=NULL;
while(开始!=NULL)
{   
printf(“%d\n”,开始->项目);
开始=开始->链接;
}   
}

在创建下一个节点后,您没有将其指向下一个节点,因此每次都会覆盖上一个节点。请尝试以下操作:

#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 = list->link;
    }   
    list->link = NULL;
    while(start != NULL)
    {   
        printf("%d\n",start->item);
        start = start->link;
    }   
}
(i=0;iitem=i; 列表->链接=(结构节点*)malloc(sizeof(结构节点)); 列表=列表->链接; }
在分配内存的for循环中,忘记添加一条语句
list=list->link
for(i=0;i<10;i++)
{
    list->item = i;
    list->link = (struct node *)malloc(sizeof(struct node));
    list = list->link;
}