面试题13:在O(1)时间删除链表节点
2016-07-04 15:43
423 查看
注意分情况讨论:
1. 要删除的不是尾节点
2. 链表只有一个节点
3. 链表中有多个节点,删除尾节点
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; } }
相关文章推荐
- 面试知识相关内容-(1)
- 搜狗校园面试题-最近邻居问题Java实现
- 面试题12:打印1到最大的n位数(大数问题)
- 锐捷面试_guozhijun20160704
- 锐捷面试问题_guanhang20160704
- 宝宝励志做让程序员泪流满面的标注
- 方正电子2016面试总结
- 【那些年遇到过的面试题】单例和静态类
- 关于面试的一些问题合集
- 面试题16:链表逆序
- 面试题11:数值的整数次方
- 话说程序员的职业生(IBM软件集团大中华区总架构师 寇卫东)
- JAVA程序员一定知道的优秀第三方库(2016版)
- 2016精选通用Java面试题二
- 记第一次实习面试经历
- 面试干货!21个必知数据科学面试题和答案part2(12-21)
- 面试干货!21个必知数据科学面试题和答案part1(1-11)
- 程序员与码农
- 程序员对自己的要求,决定他自己的高度。
- 面试时问到你对薪资的要求时 怎么去回答?