gpt4 book ai didi

c - 用于检入 C 的单链表显示

转载 作者:行者123 更新时间:2023-11-30 20:13:57 26 4
gpt4 key购买 nike

我正在我的程序中实现单链表。现在我有了这个显示函数来显示我的单链表中的内容。现在的问题是当我调用我的显示函数时。它只打印头部。例如20-->NULL。显示函数检查我是否正确实现了单链表。

struct node
{
int data;
struct node *next;
}*start=NULL;

void display()
{
struct node *new_node;
printf("The Linked List : ");
new_node=start;
while(new_node!=NULL)
{
printf("%d--->",new_node->data);
new_node=new_node->next;
}
printf("NULL");
}



void creat(int num)
{
struct node *new_node,*current;

new_node=malloc(sizeof(struct node));


new_node->data=num;
new_node->next=NULL;

if(start==NULL)
{
start=new_node;
current=new_node;
}
else
{
current->next=new_node;
current=new_node;
}
//printf("%d->",new_node->data);
}

void main()
{

int binrange,max=100,n,i,divi;
int inp[4];
clrscr();
printf("enter 5 numbers: ");
for(i=0;i<5;i++)
{
scanf("%d",&inp[i]);
}
printf("\nenter range: ");
scanf("%d",&binrange);
n=max/binrange;
divi=max/n;

for(i=0;i<=max;i++)
{
if(i%divi==0 && i>0)
{
//create nodes here
//store i into nodes
creat(i);


}


}

display();
getch();
}

最佳答案

变量currentcreat函数内的本地变量,它超出了范围(每次 creat 函数退出时都会“消失”。

这意味着两件事:每次调用该函数时,该变量将始终处于未初始化状态,并且通过取消引用(未初始化的)指针,您将获得 undefined behavior .

未定义行为的原因只是因为变量未初始化。未初始化的非静态局部变量具有不确定值,并且实际上看起来是随机的。所以你要做的就是获取这个指向“随机”位置的指针并写入它。

有三种可能的解决方案:一是使current变量成为static,二是使其成为全局变量,三是根本不使用它并在每次调用该函数时找到结尾。哦,如果您首先选择两者之一,您可能应该将其重命名为 end (或类似的名称),因为它就是这样,一个指向列表末尾的指针。

关于c - 用于检入 C 的单链表显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319944/

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