C语言 为什么这个简单的链表程序会出现分割错误



我只是想创建一个字符链表。代码如下:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct node{
    char data;
    struct node *next;
};
void push(struct node** head,char ndata)
{
    struct node* temp=(struct node*)malloc(sizeof(node));
    temp->data=ndata;
    temp->next=(*head);
    *head=temp;
}
void display(struct node* head)
{
    struct node* temp=head;
    while(temp)
    {
        printf("%c ",temp->data);
        temp=temp->next;
    }   
}
int main()
{
    struct node* head;
    int a=1;
    push(&head,'a');
    push(&head,'b');
    push(&head,'c');
    push(&head,'b');
    push(&head,'a');
    display(head);  
    getch();
    return 0;
}

我正在使用 push() 函数,它在头部插入值。然后使用 display() 方法显示列表中的值。当我执行程序时,它说"程序10.exe已停止工作"。我不明白问题是什么。谁能帮忙?

您没有初始化head因此它不是 null 而是具有垃圾值,因此它不会停止 display 函数中的循环,并尝试在那里取消引用垃圾。

这:

struct node* head;

应该是:

struct node* head = NULL;

相关内容

  • 没有找到相关文章

最新更新