1

私はCを学び始めたばかりで、かなり初心者です。今日の学校で私たちはリンクリストを学び、コードを書くことができました...ありがたいことにエラーなしで実行されています。

#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    struct node *next;
}*head;//*temp;
void create(struct node **h,int num)
{
    int i;
    struct node *temp=*h;
    for(i=0;;i++)
    {
        if(i>=num)
        break;
        temp->data=i;
        temp->next=malloc(sizeof(struct node));
        temp=temp->next;
    }
    temp->next=NULL;
}
    void display(struct node **h)
{   
    struct node *temp=*h;
    while(temp->next!=NULL)
    {
        printf("%d->",temp->data);
        temp=temp->next;
    }
    printf("\b\b  \b\b");
}
void append_end(struct node **h,int val)
{
    struct node *temp=*h,*temp1;
    //printf("'%d'",val);
    while(temp->next!=NULL)
    temp=temp->next;
    temp1=malloc(sizeof(struct node));
    temp1->data=val;
    temp1->next=NULL;
    temp->next=temp1;
}
void free_list(struct node **h)
{
    struct node *temp=*h,*tail;
    while(temp->next!=NULL)
    {
        tail=temp;
        temp=temp->next;
        free(tail);
    }
    h=NULL;
}
int main()
{
    head=malloc(sizeof(struct node));
    int i,num;
    scanf("%d",&num);
    create(&head,num);
    //display(&head);
    append_end(&head,5);
    append_end(&head,6);
    display(&head);
    /*temp=head;
    while(temp->next!=NULL)
    temp=temp->next;
    printf("%d",temp->data);*/
    free_list(&head);
    return 0;
}

期待される出力は、4の入力に対して0-> 1-> 2-> 3->5->6である必要があります

しかし、代わりに私は0-> 1-> 2-> 3->(いくつかのゴミの値)->5を取得しています

誰かが私のエラーを指摘したり、トピックを明確に理解するのに役立つ可能性のある記事にリンクしたりしていただければ幸いです。

前もって感謝します。

4

2 に答える 2