[英]Traversing through a linked list
#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;
}
}
就像標題中暗示的那樣,我試圖遍歷鏈接列表,期望的輸出為0 1。 。 9和觀察到的輸出是:9代碼有什么問題?
創建list
,您並沒有將其指向下一個節點,因此每次都只是覆蓋前一個節點。 嘗試這個:
for(i=0;i<10;i++)
{
list->item = i;
list->link = (struct node *)malloc(sizeof(struct node));
list = list->link;
}
這只是因為您的代碼中只有一條語句。 當您嘗試分配新鏈接時,您忘記了指向下一個鏈接。 因此,您只能在一個指針上分配內存,從而導致內存泄漏。
#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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.