c – 删除单链接列表中的节点
发布时间:2020-12-16 05:30:06 所属栏目:百科 来源:网络整理
导读:如何删除单链接列表中的节点,只有一个指针指向要删除的节点? [开始和结束指针不知道,可用的信息是指向应该删除的节点的指针] 解决方法 您可以删除节点而不得到上一个节点,通过使节点模仿以下节点并删除该节点: void delete(Node *n) { if (!is_sentinel(n-
如何删除单链接列表中的节点,只有一个指针指向要删除的节点?
[开始和结束指针不知道,可用的信息是指向应该删除的节点的指针] 解决方法
您可以删除节点而不得到上一个节点,通过使节点模仿以下节点并删除该节点:
void delete(Node *n) { if (!is_sentinel(n->next)) { n->content = n->next->content; Node *next = n->next; n->next = n->next->next; free(next); } else { n->content = NULL; free(n->next); n->next = NULL; } } 你可以看到,你需要专门处理最后一个元素.我正在使用一个特殊节点作为哨兵节点来标记具有内容的结尾,接下来是NULL. UPDATE:行节点* next = n-> next; n→next = n→next-> next接下来基本上洗牌节点内容,并释放节点:Image获取对要删除的节点B的引用: A / To be deleted next ---> B next ---> C next ---> *sentinel* 第一步是n-> content = n-> next-> content:将以下节点的内容复制到要删除的节点: A / To be deleted next ---> C next ---> C next ---> *sentinel* 然后修改下列几点: A / To be deleted next ---> C /---------------- next ---| C | next ---> *sentinel* 实际上释放了以下元素,得到最终的例子: A / To be deleted next ---> C next ---> *sentinel* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |