gpt4 book ai didi

c - 为什么这个简单的链表程序会出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:01 26 4
gpt4 key购买 nike

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

#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() 方法显示列表中的值。当我执行程序时,它说“program10.exe 已停止工作”。我不明白问题出在哪里。谁能帮忙?

最佳答案

你没有初始化 head 所以它不是 null 但有一个垃圾值,所以它不会停止 display 函数中的循环,并尝试取消引用那里有垃圾。

这个:

struct node* head;

应该是:

struct node* head = NULL;

关于c - 为什么这个简单的链表程序会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28264182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com