剑指offer13 在O(1)时间删除链表的结点
把下一个节点的值直接赋值给要删除的节点,然后删除下一个节点。当这样做会有两个bad case:被删除的链表结点的下一个结点为空指针,如果链表只有一个结点。其实链表只有一个结点应该属于下一个结点为空指针的大类,但处理方式不同。整个方案就是下一个结点是否是空指针
void deleteNode(TreeNode* pListHead,TreeNode* pToBeDeleted){
if(pListHead == NULL || pToBeDeleted == NULL)
return;
if(pToBeDeleted->next != NULL){
TreeNode* pnext == pToBeDeleted->next;
pToBeDeleted->val = pnext->val;
pToBeDeleted->next = pnext->next;
delete pnext;
pnext = NULL;
}
else if(pListHead == pToBeDeleted){
pListHead == NULL;
delete pToBeDeleted;
pToBeDeleted == NULL;
}
else{
TreeNode* pNode = pListHead;
while(pNode->next != pToBeDeleted){
pNode = pNode->next;
}
pNode->next == NULL;
delete pToBeDeleted;
pToBeDeleted == NULL;
}
return;
}
剑指offer13 在O(1)时间删除链表的结点的更多相关文章
- [剑指offer]Q13:O(1)时间删除链表的结点
通常我们所说的删除链表的某个结点,是彻底删除该结点的空间.而要这么做就必须知道其前驱结点.这里的想法是,链表中存储的val是同类型的,仅仅要将该结点的val内容删除就能够了. 那么就能够用该结点的后继 ...
- 剑指offer之 O(1)时间删除链表结点
问题描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. package Problem13; /* * 问题描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1 ...
- 剑指offer.在O(1)时间内删除链表节点
给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点.假设链表一定存在,并且该节点一定不是尾节点. 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节 ...
- 【校招面试 之 剑指offer】第18题 删除链表中的节点
题目一:在O(1)时间内删除链表节点. 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 思路:(1)如果要删除的节点不是链表的尾节点,则将被删除节点的内容复制到该节点,然 ...
- 【剑指offer】面试题 18. 删除链表的节点
面试题 18. 删除链表的节点
- 剑指Offer11 在O(1)内删除链表结点
/************************************************************************* > File Name: 11_Delete ...
- 剑指offer五十六之删除链表中重复的结点
一.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 剑指Offer(书):删除链表的节点
题目:在O(1)的时间内删除列表节点. /** * 步骤: * 1.检查head与removeNode节点是否为空 * 2.检查removeNode的后一个节点是否为空,不为空则使用后一个节点的值覆盖 ...
- 【剑指Offer】面试题18. 删除链表的节点
题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 ...
随机推荐
- type=file的change事件只能执行一次的解决方案
最近帮朋友做个项目中遇到了type=file change事件只能执行一次的问题,度娘了一下,发现提供了各种解决方案,所以决定记录一下我的思考方向和最终解决方式. 起初帮朋友做个项目,项目中遇到上传文 ...
- [android] android项目架构
准备步骤: 1.创建工程(设置版本兼容,最低兼容版本) 2.导入常用jar包,(处理字符串和加密用的jar文件) Commons Lang,Commons Codec commons-codec.ja ...
- 流畅的python和cookbook学习笔记(六)
1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...
- webapp 的简单开发
web app 的技术平台很多,如adobe phonegap.sencha touch.appcan(国产).dcloud(国产)平台.我选择了dcloud平台,原因:简单,容易上手. web ap ...
- Python-并发编程(线程)
之前我们说了并发编程中的进程问题,几天我们来聊聊并发编程中的线程问题. 一.背景知识 1.进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能 ...
- css flexbox 弹性布局
flexbox 即css flexible box layout. ie9及以下不支持flexbox. flex详细规范(https://www.w3.org/TR/css-flexbox/) 为什么 ...
- sqlite 时间函数及时间处理
SQLite分页显示:Select * From news order by id desc Limit 10 Offset 10这篇文章是根据 SQLite 官方 WIKI 里的内容翻译,如果有什么 ...
- radio中最佳解决方案
radio中最佳解决方案 1.html中 <td> <input id="status" name="status" type="r ...
- android快速启动动画
http://blog.csdn.net/robert_cysy/article/details/72824513 https://www.cnblogs.com/404map/p/4981099.h ...
- c# 依赖注入之---setterInjection(转)
图3.1 Setter注入示意 定义一个接口: namespace SetterInjection { internal interface IServiceClass { string Servic ...