题目:

假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。

分析与解答:

假设给定的指针为pCurrent,Node *pNext=pCurrent->next(pNext指向pCurrent所指节点的下一个节点。

我们由pCurrent指向B,pNext(pCurrent->next)指向C,同理pNext->next(pCurrent->next->next)指向D,不过不能简单地删除B,因为那样会使得链表被分割。

但是我们可以删除C,并通过pCurrent->next=pCurrent->next->next重新使链表连接,其中唯一丢失的是C中的data项。这时用C中的数据取代B中的数据项,让B成为C,然后将真正指向C的指针删除,这样就达到了目的。

pCurrent->next=pNext->next;
pCurrent->data=pNext->data;
delete pNext;

其实指针不过是内存中的地址而已,当处理这类题目时,先画出清晰的图表会很有帮助。

扩展问题:

编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来。

Node *p=head->next;
Node *e=NULL;
Node *q;
while(p->next!=NULL)
{
q=p->next; //记录下一个节点
p->next=e; //e记录的是转置之后的链表的第一个节点,
e=p; //增加当前节点为转置的目标链表的第一个节点
p=q; //待操作的链表的节点逐渐减少,目标链表逐渐增加
}

转载于:https://www.cnblogs.com/zdblog/p/3665531.html

从无头单链表中删除节点 结构之法 4相关推荐

  1. 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置

    题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...

  2. 编程之美-从无头单链表中删除节点方法整理

    [试题描述] 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除. 程序:

  3. 从无头单链表中删除节点

    #include<iostream> using namespace std;struct Node{int data;Node* next; };void deleteNode(Node ...

  4. python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法

    本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...

  5. 狸猫换太子--删除无头单链表中结点

    狸猫换太子–删除无头单链表中结点 @(算法学习) 学习自<编程之美>. 很有意思的一种做法. 给定一个没有头指针的单链表,一个指针指向次单链表中的一个中间结点,删除此结点. 分析:这种根本 ...

  6. c语言单链表删除倒数第k个数,在单链表中删除倒数第k个节点

    实现方式很多,在这里只说两种实现方式.看不懂时候,大家可以画画图,对理解为什么很有帮助. 第一种方式: 1.首先判断K值和链表是否为空,如果k<=0,或链表为空,直接返回head: 2.满足上面 ...

  7. 在单链表中删除指定值的节点。

    在单链表中删除指定值的节点. 题目:给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除. 例如1->2->3->4->4->null,输出 ...

  8. 链表问题2——在单链表中删除倒数第K个节点

    题目 实现一个函数,可以删除单链表中倒数第K个节点. 要求 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 如果链表为空或者K值小于1,直接返回head即可,除此之外,从 ...

  9. C语言统计单链表中的节点数-实训

    任务描述 本小节需要你统计单链表中的节点数. 相关知识 根据上一关我们知道怎么创建单链表了,那么这一关让我们巩固一下单链表的知识. 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - E ...

最新文章

  1. Android -- TextView与EditText 同步显示
  2. 开关灯效果思路代码分享
  3. 教师计算机应用测试题,教师计算机等级考试模拟考试题演示教学
  4. html如何将标题置顶,.Html 头部,标题
  5. 请求 返回 net::ERR_CONTENT_LENGTH_MISMATCH 调试服务 (启动jboos)
  6. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
  7. 西交大计算机考博学术英语,2018年西安交通大学考博英语真题
  8. 必知必会!常用矩阵求导和重要的矩阵
  9. err=etherbase address must be explicitly specified
  10. 贝塞尔方程与贝塞尔函数学习笔记
  11. python直方图规定化_OpenCV python 彩色图像的直方图规定化
  12. Spring学习笔记—Spring之旅
  13. 如何生成serialVersionUID
  14. [xsy2123]毛毛虫
  15. 双击jar包无法运行
  16. 智能交通:电子警察系统技术实施方案(ppt)
  17. 《软技能:代码之外的生存指南》读书笔记
  18. 阿里云疯狂促销 公有云之战刚鸣枪
  19. 【python】根据pixiv网站的图片url下载图片到本地
  20. Java 父类的引用指向子类对象有啥用 总结

热门文章

  1. Java7编程 高级进阶学习笔记--嵌套类
  2. UVa 537 - Artificial Intelligence?
  3. string:值类型?引用类型?[转]
  4. PHP、jQuery、jQueryPager结合实现Ajax分页
  5. 《bbs.yingjiesheng.com,超全的求职笔经面经论坛》
  6. 算法学习:计算几何旋转卡壳
  7. 《快活帮》第九次团队作业:Beta冲刺与验收准备
  8. springboot之jackson的两种配置方式
  9. 【Win 10 应用开发】UI Composition 札记(二):基本构件
  10. xamarin 学习笔记02- IOS Simulator for windows 安装