源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

给定链表中间节点指针,删除中间节点的方法

  • 时间:2020-12-27 22:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:给定链表中间节点指针,删除中间节点的方法
问题如下 输入:链表 a->b->c->d->e中指向节点c的指针 输出:无返回值,但新链表变为a->b->d->e 解答: 想了好久没想出来,看了提示才知道解法的。这里用到了一个小技巧。要删除中间节点,但是我们不知道要删除节点的上一个节点p,所以无法通过修改指针的方法(p->next=del->next)来删除节点,但知道要删除节点的后一个节点,那么我们换一个思路,把要删除的节点的数据与该节点的后一个节点的数据交换,然后删除后一个节点,从而达到目的。但是该方法不能删除最后一个节点,原因显而易见。
[u]复制代码[/u] 代码如下:
// a tricky solution,can't delete the last one element int delete_node(NODE* node) {   int data;   NODE *p=node->next;    node->data=p->data;    node->next=p->next;   free(p); }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部