我正在爲「單一鏈接列表」編寫C代碼。在這段代碼中,我想在列表的末尾插入元素。它編譯得很好。但是在運行期間,預期的輸出不會到來。我正在使用gcc
作爲編譯器。每當我在終端上做./a.out
它就會被絞死。
下面是代碼:運行時錯誤:單獨鏈接列表程序插入一個值
#include<stdio.h>
#include<stdlib.h>
struct list
{
int node;
struct list *next;
};
void insert(struct list *, int);
void print(struct list *);
int main()
{
struct list *mylist;
insert(mylist, 10);
insert(mylist, 20);
insert(mylist, 30);
insert(mylist, 40);
insert(mylist, 50);
insert(mylist, 60);
print(mylist);
return 0;
}
void print(struct list *head)
{
if(head==NULL)
return;
else
{
while(head->next!=NULL)
{
printf("%d\t",head->node);
head=head->next;
}
}
}
void insert(struct list *head, int value)
{
struct list *new_node;
new_node = (struct list *)malloc(sizeof(struct list));
//node Creation
new_node->node=value;
new_node->next=NULL;
//Adding Node to list
if(head==NULL)
{
head=new_node;
}
else
{
while(head->next!=NULL);
{
head=head->next;
}
head->next=new_node;
}
}
這裏insert()
是其功能中mylist
鏈表和print()
插入元件是它打印在鏈接列表中的所有的值的函數。請幫忙。我無法捕捉到我犯的錯誤。
爲什麼你標記的一個問題是明確下用C++ ?沒有這樣的東西,C/C++ – nijansen
mylist沒有被初始化爲NULL,但這似乎很重要。 – jxh
當我將mylist初始化爲NULL時,它總是進入insert()函數的** if **部分,因此沒有鏈接列表。 – Naman