在O(1)时间删除链表结点
来源:互联网 发布:诺基亚3310软件下载 编辑:程序博客网 时间:2024/05/19 23:16
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。
思路:
找到要删除的结点i 的下一个结点j ,把后面的结点j 的内容复制到要删除结点i,i->next = j->next, delete j;
注意:
删除尾结点时,只能从头到尾遍历链表再进行删除。
只有一个节点,删除头结点。(不要忘记删除把头结点设置成NULL)
struct Node{int _value;Node* _next;};void DeleteNode(Node* pHead, Node* del){if (pHead == NULL || del == NULL)return;if (del->_next == NULL)//删除为节点,只能用遍历方式删除{Node* cur = pHead;while (cur->_next != del){cur = cur->_next;}cur->_next = NULL;delete del;del = NULL;}else if (del == pHead)//只有一个节点,删除头结点{delete del;del = NULL;pHead = del = NULL;}else//多个节点,删除其中一个{Node* next = del->_next;del->_value = next->_value;//把后面的结点复制到要被删除的结点del->_next = next->_next;delete next;next = NULL;}}
0 0
- 在O(1)时间删除链表结点--总结
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 033-在O(1)时间删除链表结点
- 在O(1)平均时间删除链表结点 [# 13]
- 在O(1)时间删除链表结点
- 在O(1)平均时间删除链表结点
- 在O(1)时间删除链表结点--总结
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 在O(1)时间删除指定链表结点
- 在o(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点[数据结构]
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- Struts2标签小结
- [openstack]proxy后devstack方式安装openstack
- Android Gradle多渠道批量打包
- ARToolkit Part 3: Locating Vertices 详解
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
- 在O(1)时间删除链表结点
- Python 图片识别
- JUnit之TestCase和TestSuite详解
- Windows下Git SSH 创建Key的步骤
- 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
- Lucene原理
- 关于获取当前时间出现1970年问题的解决
- Ret2libc
- 第一行代码-安卓之旅