しばらく前に、リンクされたリストについて質問したところ、良い返事がありました...今、提案を使用して新しいコードを書きましたが、エラーが発生しました。コードは次のとおりです。
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}node;
node *mknode()
{
return malloc(sizeof(node));
}
void create(node* h, int num)
{
int i;
node *temp=h;
for(i=0;i<num;i++)
{
temp->data=i;
if(i==(num-1))
temp->next=NULL;
else
temp->next=mknode();
temp=temp->next;
}
}
node* add_end(node *h,int num)
{
node *temp;
if(h==NULL)
{
h=mknode();
temp=h;
create(h,num);
}
else
{
temp=h;
while(h!=NULL){
h=h->next;}
h=mknode();
create(h,num);
}
return temp;
}
void display(node *h)
{
node *temp=h;
while(temp!=NULL)
{
printf("%d->",temp->data);
temp=temp->next;
}
}
int main()
{
node *head=NULL;
int num;
scanf("%d",&num);
head=add_end(head,num);
head=add_end(head,num);
display(head);
//printf("%d",list_len(head));
free(head);
return 0;
}
3 の入力に対して add_end を 2 回呼び出したので、出力は 0->1->2->0->1->2-> のはずですが、代わりに 0->1->2-> を取得しています
create 関数内の FOR ループが n の入力に対して 2n 回実行されていることを確認しました。問題は、表示機能で NULL が発生することですが、コードのどこで発生しているのかわかりません。
すべての助けに感謝します。事前に感謝します-user1614886