• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    给定链表中间节点指针,删除中间节点的方法
    问题如下
    输入:链表 a->b->c->d->e中指向节点c的指针
    输出:无返回值,但新链表变为a->b->d->e
    解答:
    想了好久没想出来,看了提示才知道解法的。这里用到了一个小技巧。要删除中间节点,但是我们不知道要删除节点的上一个节点p,所以无法通过修改指针的方法(p->next=del->next)来删除节点,但知道要删除节点的后一个节点,那么我们换一个思路,把要删除的节点的数据与该节点的后一个节点的数据交换,然后删除后一个节点,从而达到目的。但是该方法不能删除最后一个节点,原因显而易见。
    复制代码 代码如下:

    // 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);
    }
    您可能感兴趣的文章:
    • Linux内核链表实现过程
    • 编码实现从无序链表中移除重复项(C和JAVA实例)
    • 用C和JAVA分别创建链表的实例
    • java单向链表的实现实例
    • C++中单链表的建立与基本操作
    • STL list链表的用法详细解析
    上一篇:linux网络编程用到的网络函数详解用和使用示例
    下一篇:linux使用select实现精确定时器详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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