【发布时间】:2012-09-25 16:27:14
【问题描述】:
我有一个函数deleteNode,它接收列表的头部和要删除的节点。当我运行它时,它成功删除了节点,但它也删除了它之后的所有内容。我相信这与我重建列表有关,但我无法弄清楚我的逻辑在哪里出错,所以我可以使用一些帮助。函数代码如下:
void deleteNode(struct lnode** head, struct lnode* node) {
struct lnode* nextNode = nodeGetNext(node);
printf("word: \n%s\n",nodeGetWord(nextNode));
struct lnode* nodeToDelete = node;
*head = nodeGetNext(nodeToDelete);
printf("Head word: %s\n",nodeGetWord(*head));
free(nodeToDelete);
}
【问题讨论】:
-
嗯,您似乎没有将删除后的节点重新链接到之前的节点?我说的对吗?
-
假设你的列表是 H->...->P->D->N->...,H 是头部,D 是要删除的节点。您首先必须从 P 中取消链接 D 并将 P 链接到 N。当您必须删除头或最后一个节点时要小心...
-
发布
struct lnode的定义以获得更有用的答案。 -
也只是从查看这一点并做出一些假设,看起来它删除了要删除的节点之前的所有内容,因为您将头指向要删除的节点之后的节点
标签: c list linked-list