剑指offer-面试题18-删除链表的节点-链表
2024-09-06 20:28:39
/*
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。
*/
/*
思路:
将要删除的节点的下一个节点的value和next复制过来,删除下一个节点。
考虑两种特殊情况:
节点为尾结点,则需要从头遍历。
节点既是尾结点也是头结点,需要将头节点指向的内容置为空。
*/
struct ListNode{
int value;
ListNode* next;
}; void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted){
if(!pListHead || !pToBeDeleted){
throw("invalid parameters");
}
//要删除的节点既是头结点,又是尾结点
if(*pListHead== pToBeDeleted && !pToBeDeleted->next){
*pListHead = nullptr;
delete pToBeDeleted;
pToBeDeleted = nullptr;
}else if(!pToBeDeleted->next){//要删除的节点是尾结点if ListNode* pNode = *pListHead;
while(!pNode->next->next){
pNode = pNode->next;
}
pNode->next = nullptr;
delete pToBeDeleted;
pToBeDeleted = nullptr;
}else{
ListNode *nextNode = pToBeDeleted->next;
pToBeDeleted->value = nextNode->value;
pToBeDeleted->next = nextNode->next;
delete nextNode;
nextNode = nullptr;
} }
最新文章
- 【xcode5的使用】
- 如何成为python高手
- 利用Canvas编辑图片
- PHPCMS几个有用的全局函数
- JavaScript的引擎机制
- Hadoop学习篇1 快速入门
- c++ <;string.h>;中包括哪些常用函数
- iOS:crash崩溃日志分析
- dx中纹理相关的接口备注
- js实现对比百分比
- GFF format
- MSP430F149学习之路——比较器Comparaor_A
- zoj 3365
- find the safest road--hdu1596
- android:layout_gravity和android:gravity属性的区别1
- Spark ML源码分析之二 从单机到分布式
- 识别拖动与点击操作之zepto的bug
- qt 画多边形(实现鼠标拖动节点)
- listview添加数据
- 基于vue框架手写一个notify插件,实现通知功能
热门文章
- 关于求最长子串,使得最大减最小小于k的问题-以POJ4003为例
- codeforces 922 B. Magic Forest(枚举、位运算(异或))
- PHP第三方登录——QQ登录
- JFrame的getContentPane
- Python3(十) 函数式编程: 匿名函数、高阶函数、装饰器
- MySQL8.0 InnoDB并行执行
- python随用随学20200118-函数的高级特性
- transient关键字和serialVersionUID
- 实用,Windows后台守护进程iNeuDaemon发布。Linux操作系统下使用使用supervisor
- kubernetes监控