gpt4 book ai didi

c - 使我的链接列表正常工作时遇到问题

转载 作者:行者123 更新时间:2023-11-30 19:11:09 25 4
gpt4 key购买 nike

我用来向列表添加新节点的函数,不断收到错误“段错误(核心转储)”,我感觉在某些时候我错误地引用了列表

void add(Huff ** head, Huff * current, char x)
{

int found = 0;

检查列表是否为空,将新节点设置为头

if(current == NULL)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;

newItem->next = NULL;
*head = newItem;

}

检查节点是否具有相同的值

else
{ while(current != NULL)
{
if(current->c == x)
{
current->freq += 1;
found = 1;
break;
}

}

如果不是,请添加到列表中

    if(found == 0)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;


current->next = newItem;
}
}

}

最佳答案

此循环之后

else
{ while(current != NULL)
{
if(current->c == x)
{
current->freq += 1;
found = 1;
break;
}

}
如果找不到适当的节点,

current 可以等于 NULL

作为此代码片段的结果

if(found == 0)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;

current->next = newItem;
^^^^^^^
}

使用NULL指针current访问内存。

我认为你可以简化函数接口(interface)的声明

void add( Huff ** current, char x);

关于c - 使我的链接列表正常工作时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620227/

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