面试题13:在O(1)时间删除链表节点
2024-09-18 03:37:50
注意分情况讨论:
1. 要删除的不是尾节点
2. 链表只有一个节点
3. 链表中有多个节点,删除尾节点
void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted)
{
if(!pListHead || !pToBeDeleted)
return; // 要删除的结点不是尾结点
if(pToBeDeleted->m_pNext != NULL)
{
ListNode* pNext = pToBeDeleted->m_pNext;
pToBeDeleted->m_nValue = pNext->m_nValue;
pToBeDeleted->m_pNext = pNext->m_pNext; delete pNext;
pNext = NULL;
}
// 链表只有一个结点,删除头结点(也是尾结点)
else if(*pListHead == pToBeDeleted)
{
delete pToBeDeleted;
pToBeDeleted = NULL;
*pListHead = NULL;
}
// 链表中有多个结点,删除尾结点
else
{
ListNode* pNode = *pListHead;
while(pNode->m_pNext != pToBeDeleted)
{
pNode = pNode->m_pNext;
} pNode->m_pNext = NULL;
delete pToBeDeleted;
pToBeDeleted = NULL;
}
}
最新文章
- 【WPF】 返回随机颜色,Random r= new Random() 不能放在函数里!
- PHP中计划任务
- K米交流会现场图
- [HDOJ1015]Safecracker(DFS, 组合数学)
- Install GDAL in OpenSUSE 12.3 Linux
- java获取当前方法
- Json数据时间格式的处理
- Qt多线程编程总结(一)(所有GUI对象都是线程不安全的)
- 开源 .net license tool, EasyLicense !
- 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统
- 使用java生成mapbox-gl可读的vector tile
- java 锁 Lock接口详解
- SpringBoot2.0 redis生成组建和读写配置文件
- bzoj 1812
- C语言实现split以某个字符分割一个字符串
- ECharts.js学习动态数据绑定
- Practice2 结对子之“小学四则运算”
- [LeetCode] 704. Binary Search_Easy tag: Binary Search
- CSS(三)--自定义标签
- 使用kafka和zookeeper 构建分布式编译环境