【发布时间】:2021-03-26 04:39:21
【问题描述】:
所以我知道我必须做什么的背景。将前一个元素链接到下一个元素。但无论我尝试什么,我都会遇到分段错误(LINUX GCC)。所以有人可以看到我做错了什么。打印功能工作正常,因此故障必须在功能中的某个地方。代码如下...
定义...(编辑) 对不起,现在发布声明...
typedef struct Word {
char *word;
int count;
struct Word *next;
} Word;
typedef Word* Dictionary;
void delete_word (Dictionary dict, char* str){
Dictionary tempprev=dict;
dict=dict->next;
Dictionary tempnext=dict->next;
while (dict!=NULL){
if (strcmp(dict->word,str)==0){
tempprev->next=tempnext;
free (dict->word);
}
tempprev=dict;
dict=dict->next;
tempnext=dict->next;
}
}
【问题讨论】:
-
用笔和纸画出指针。
-
@Đugum Roko 至少显示名称 Dictionary 是如何定义的。
-
绘制带有一些方框和箭头的图表真的很值得。此外,作为一般偏好,我发现将指针隐藏在 typedef always 后面会使事情变得混乱。尤其是当你可能需要一个指向指针的时候,以防你移除头部......
-
关于:
dict=dict->next; .... while (dict!=NULL){如果链表包含 0 个条目,那么这是访问内存地址 0 的正上方。结果将是段错误事件 -
请发minimal reproducible example,以便我们重现问题并帮助您调试。
标签: c struct linked-list singly-linked-list function-definition