c - 有人可以告诉我该程序中(核心转储)错误的原因吗?



有人可以帮助我解决程序中segmentation fault错误吗?我最近开始使用链表,我不知道我是否正确使用了struct node。如果使用错误,有人可以纠正我吗?谢谢!

#include<stdio.h>
#include<stdlib.h>
struct node
{
        int data;
        struct node* link;
};
struct node* root = NULL;
void append()
{
        struct node* temp;
        temp=(struct node*)malloc(sizeof(struct node));
        printf("Enter The Node Value: ");
        scanf("%d",&temp->data);
        temp->link=NULL;
        if(root = NULL)
        {
                root = temp;
        }
        else
        {
                struct node* p;
                p = root;
                while(p->link != NULL)
                {
                        p=p->link;
                }
                p = temp;
        }
}
int main()
{
        printf("Add A Node To The Structure:-n");
        while(1)
        {
                int ch;
                printf("Enter 2 To Exitn");
                printf("Enter Your Choice:");
                scanf("%d",&ch);
                switch(ch)
                {
                        case 2: exit(0);
                        default:append();
                }
        }
        return 0;
}
if(root = NULL)

null分配给root而不是检查。Null 被强制转换为布尔值 false,因此执行 else 块。使用假定非 null 的 root 属性会导致段错误。改为写if(root == NULL)

相关内容

  • 没有找到相关文章

最新更新