13. 在O(1)时间删除链表节点(C++版本)
使用的链表相关定义及函数在:链表最小结构(C++版本)
前置条件:待删除节点pRemoveNode一定在链表myList中。
void RemoveNodeFromList(MyList& myList, ListNode* pRemoveNode)
{if (nullptr == pRemoveNode) return;if (pRemoveNode->pNext != nullptr) // 待删除节点为中间节点(主要){ListNode* pNextNode = pRemoveNode->pNext;pRemoveNode->pNext = pNextNode->pNext; // 待删除节点的指向其下个节点的下个节点pRemoveNode->data = pNextNode->data; // 将待删除节点的下个节点的值赋给待删除节点delete pNextNode; // 删除待删除节点的下个节点,而不是待删除节点}else if (pRemoveNode == myList.pHead) // 待删除节点为头节点{myList.pHead = nullptr;delete pRemoveNode;}else // 待删除节点为尾节点{// 下面代码需要调用端保证pRemoveNode一定在myList中ListNode* pCurNode = myList.pHead;while (pCurNode->pNext != pRemoveNode) pCurNode = pCurNode->pNext;pCurNode->pNext = pRemoveNode->pNext;delete pRemoveNode;}
}
13. 在O(1)时间删除链表节点(C++版本)相关推荐
- 剑指offer-面试题13.在O(1)时间删除链表节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点. 链表节点与函数的定义如下. 通常我们删除某个节点都是从头开始遍历到需要删除节点的前一个节点. 然后使得该节点的next ...
- 在O(1)时间删除链表节点
在O(1)时间删除链表节点 [题目]: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该节点. void deleteNode(ListNode* pListHead, ListN ...
- C#刷剑指Offer | 在O(1)时间删除链表节点
[C#刷题]| 作者 / Edison Zhou 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目),希望对你有帮助!本文题目为:在O(1)时间删 ...
- 数据结构-在O(1)时间删除链表节点
题目:给定单向链表的头指针和一个节点的指针,定义一个函数在O(1)时间删除该节点. 分析:本题目是基于一个假设,要删除的节点的确在链表中.因为我们需要O(n)的时间来判断该节点是否在链表中. /* 剑 ...
- [剑指offer]面试题13:在O(1)时间删除链表结点
面试题13:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在 O(1)时间删除该结点.链表结点与函数的定义如下: struct ListNode {int valu ...
- 《剑指offer》第十八题(在O(1)时间删除链表结点)
// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点. #include <iostream> ...
- 【剑指offer-Java版】13O(1)时间删除链表结点
O(1)时间删除链表结点 前提是调用者知道要删除的结点的指针,而不是要删除结点的值 不过此类删除问题,当然是存在各种边界条件了: 1) 链表中只有一个结点 - 删除唯一的一个 2) 要删除的结点是最后 ...
- C语言通过链表指针删除链表节点的算法(附完整源码)
C语言通过链表指针删除链表节点的算法 C语言通过链表指针删除链表节点的算法完整源码(定义,实现,main函数测试) C语言通过链表指针删除链表节点的算法完整源码(定义,实现,main函数测试) #in ...
- 面试题18: 删除链表节点:删除链表中重复的节点
/******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...
- 关于递归删除链表节点为什么不会断链问题解释
问题的由来: 当你第一次实现用递归实现链表删除功能的时候,是否有一丝丝的考虑过.这个问题呢?为什么对于非递归版本的删除必须要知道当前要删除节点的前驱,而需要对其前驱节点的next域指针进行修改. ...
最新文章
- 让你二十年后仍是人才
- Android 对BaseAdapter做优化处理
- 【设计模式】外观模式
- Winform开发框架之通用人员信息管理实现代码介绍
- js GB2312和unicode互转
- Windows环境下node.js的安装和配置
- JZOJ 2309. 【中山市选2011】辽哥游戏
- 从源码角度看Android系统init进程启动过程
- datetime类型怎么输入_数据库之mysql的基础类型
- submit与button区别提交区别
- Devexpress 常见问题
- 11.solr学习速成之MoreLikeThis
- 天枰称重 (枚举法|进制转换逢十进一模版)
- java 多线程 最优_Java多线程与并发系列从0到1全部合集,强烈建议收藏!
- apache 支持apk下载安装
- js Date 获取 年 月 日
- RST报文以及产生场景
- OOD: 我所理解的SOLID原则
- 【webpack5】webpack-dev-server 热更新不能自动刷新浏览器
- 【matlab】拟合直线的方法
热门文章
- php装curl拓展出错
- MySQL online create index实现原理
- OpenDigg前端开源项目周报1219
- drbd+corosync+pacemaker实现mysql的高可用性“上”
- 14.深入分布式缓存:从原理到实践 --- 典型电商应用与缓存
- 5.Nginx 反向代理
- 5. JavaScript Number 对象
- java zip 压缩文件夹_java来实现zip压缩文件或者文件夹
- 6.18-GTest
- 静态HTML模板渲染