「A Singly Link List」のコードを 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()
あり、リンクリストのすべての値を出力する関数です。助けてください。私は自分が犯した間違いを見つけることができません。