在O(1)时间删除链表结点
时间:2019-02-16
本文章向大家介绍在O(1)时间删除链表结点,主要包括在O(1)时间删除链表结点使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:
给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除结点。
思路:
一般的想法是从头开始遍历,直到找到要删除的节点p的前一个节点temp,然后让temp->next指向p->next即可
这种思路时间复杂度是O(n)的
我们分情况考虑,如果要删除的节点p不是尾部节点,我们可以让p拷贝p->next节点的信息,然后删除p->next节点即可,这种时间复杂度是O(1)的,如果p是尾部节点,那么还是要从头遍历。
注意delete节点之后,要把节点置为nullptr
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
void DeleteNode(ListNode** head, ListNode* p)
{
if (head == nullptr || p == nullptr)
return;
if (p->m_pNext != nullptr)//要删除的节点不是尾节点
{
ListNode* temp = p->m_pNext;
p->m_nValue = temp->m_nValue;
p->m_pNext = temp->m_pNext;
delete temp;
temp = nullptr;
}
else if (*head == p)//只有一个节点或删除头结点
{
delete p;
p = nullptr;
head = nullptr;
}
else//链表中有多个节点,删除尾节点
{
ListNode* temp = *head;
while (temp->m_pNext != p)
temp = temp->m_pNext;
temp->m_pNext = nullptr;
delete p;
p = nullptr;
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决PHP使用CURL发送GET请求时传递参数的问题
- php弹出提示框的是实例写法
- laravel 时间格式转时间戳的例子
- php新建文件的方法实例
- 解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
- PHP迭代器和生成器用法实例分析
- php中关于换行的实例写法
- laravel 获取当前url的别名方法
- php中文语义分析实现方法示例
- laravel 中某一字段自增、自减的例子
- php统计数组不同元素的个数的实例方法
- PHP实现单条sql执行多个数据的insert语句方法
- PHP的JSON封装、转变及输出操作示例
- php 策略模式原理与应用深入理解
- 解决在Laravel 中处理OPTIONS请求的问题