【发布时间】:2022-01-15 12:59:54
【问题描述】:
我目前正在用 C 语言创建一个程序,它基本上是一个链表内的链表。内部列表是字符,外部列表是单词。不幸的是,我在删除一些外部节点(单词)和释放它们的内存时遇到了问题。我的程序不断崩溃,我不知道为什么。编译器没有给我任何警告或错误,我一直在寻找修复几个小时。任何可以查看代码的人都可以得到任何帮助!谢谢!
*void deleteWord (Node* Node, int index){
int counter = 0;
if (Node == NULL)
return;
while (Node->next != NULL && counter != (index - 1)){
Node = Node->next;
counter++;
}
struct node* wordTemp = Node->next;
//Node->next = Node->next->next;
while (wordTemp->word != NULL){
InnerNode* letterTemp = wordTemp->word->next;
free(wordTemp->word);
wordTemp->word = letterTemp;
}
free(wordTemp);
return;
}
【问题讨论】:
-
为什么是
counter != (index - 1)?counter从零开始,index从 1 开始? -
这样我就得到了我真正想要释放的节点之前的节点,所以我可以将它与我想要释放的节点之后的节点链接
-
嗯好的。但是,如果您传入索引 0,您将获得列表中的最后一个节点,这可能不是您想要的。你也需要处理极端情况。
标签: c string pointers linked-list