gpt4 book ai didi

c - 链接列表程序中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:05 24 4
gpt4 key购买 nike

这个程序是创建一个链接列表。当我运行这个程序时,它给我一个段错误。

#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next, *prev;
};
struct node *root=NULL;
void push (int);
void pop (void );
struct node * create_node (int );
void travel (void );
int main()
{
int i, j, choice, count;
printf("enter choice\n");
scanf("%d", &choice);
count = 0;
while (choice == 1) {
printf("enter a data element");
scanf("%d", &j);
count++;
printf("enter choice\n");
scanf("%d", &choice);
}
printf("the link list is \n");
//travel function to be created
travel();
}

void push(int data)
{
struct node *t1;
t1=root;
while( t1->next!=NULL)
{
t1=t1->next;
}
t1->next=create_node( data);
}

void pop()
{
}


void travel (void )
{
struct node *t1;
t1=root;
while (t1->next!=NULL)
{
printf("%d ",t1->data);
}
printf("%d ",t1->data);
}
struct node * create_node (int data)
{
struct node *p = (struct node *) malloc (sizeof(struct node));
p->data=data;
p->next=NULL;
p->prev=NULL;
return p;
}

可能是什么错误?我是这样执行的

user@ubuntu:~/programming$ ./a.out 
enter choice
1
enter a data element45
enter choice
1
enter a data element67
enter choice
1
enter a data element89
enter choice
0
the link list is
Segmentation fault

最佳答案

root 的初始声明和初始化之后,您永远不会分配任何东西,因此它始终为 NULL,然后您继续在 travel()< 中取消引用它.

struct node *t1;
t1=root;

// what if root is NULL? Too late... segfault (you hope)
while( t1->next!=NULL)

关于c - 链接列表程序中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10487535/

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