在O(1)时间删除链表结点
2014-04-24 15:20
288 查看
//给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 1 struct ListNode //结点结构 { int m_nValue; ListNode* m_pNext; }; 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)//只有一个结点 { 23 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 ; } }
相关文章推荐
- HDU 1087 Super Jumping! Jumping! Jumping!
- AJAX组件-dwr 的部署与实现
- MFC中文档/视图类结构内的相互调用方法总结
- android std::string(NULL) crash
- objective-c语法
- 【新技术】笔记本无线充电
- 美工与程序员的Web工作如何做到相对分离?
- 设计推荐系统
- 2014 JAVA软件工程师发展趋势
- SQL SERVER 2005/2008全文索引实战讲解
- Hangover
- [z]JSONP例子
- hdoj 2209 翻纸牌游戏(BFS + 位运算)
- iMatrix平台的发展史
- zookeeper watcher方案
- ural1519之插头DP
- 在Tomcat下部署java web项目的简单方法步骤
- python string模块
- Giraph源码分析(七)—— 添加消息统计功能
- phpcms栏目调用详解