基于Python和C++实现删除链表的节点


Posted in Python onJuly 06, 2020

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

示例 1:

输入: head = [4,5,1,9], val = 5

输出: [4,1,9]

解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例 2:

输入: head = [4,5,1,9], val = 1

输出: [4,5,9]

解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

思路:

建立一个空节点作为哨兵节点,可以把首尾等特殊情况一般化,且方便返回结果,使用双指针将更加方便操作链表。

Python解法:

class ListNode:
  def __init__(self, x):
    self.val = x
    self.next = None


class Solution:
  def deleteNode(self, head: ListNode, val: int) -> ListNode:
    tempHead = ListNode(None) # 构建哨兵节点
    tempHead.next = head

    prePtr = tempHead # 使用双指针
    postPtr = head

    while postPtr:
      if postPtr.val == val:
        prePtr.next = postPtr.next
        break
      prePtr = prePtr.next
      postPtr = postPtr.next
    return tempHead.next

C++解法:

struct ListNode {
   int val;
   ListNode *next;
   ListNode(int x) : val(x), next(NULL) {}
 };

class Solution {
public:
  ListNode* deleteNode(ListNode* head, int val) {
    ListNode *tempHead = new ListNode(-1); // 哨兵节点,创建节点一定要用new!!!!!!!!!!!!!!
    tempHead->next = head;

    ListNode *prePtr = tempHead;
    ListNode *postPtr = head;

    while (postPtr) {
      if (postPtr->val == val) {
        prePtr->next = postPtr->next; // 画图确定指针指向关系,按照箭头确定指向
        break;
      }
      postPtr = postPtr->next;
      prePtr = prePtr->next;
    }
    return tempHead->next;
  }
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python字符编码判断方法分析
Jul 01 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
python随机数分布random测试
Aug 27 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
通过自学python能找到工作吗
Jun 21 Python
Python getsizeof()和getsize()区分详解
Nov 20 Python
Python基础之常用库常用方法整理
Apr 30 Python
python 实现体质指数BMI计算
May 26 Python
基于Python 的语音重采样函数解析
Jul 06 #Python
python interpolate插值实例
Jul 06 #Python
基于Python实现2种反转链表方法代码实例
Jul 06 #Python
简单了解Django项目应用创建过程
Jul 06 #Python
如何在mac下配置python虚拟环境
Jul 06 #Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 #Python
使用TensorBoard进行超参数优化的实现
Jul 06 #Python
You might like
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
Bootstrap精简教程
2015/11/27 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
小程序云开发实战小结
2018/10/25 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python读取图片属性信息的实现方法
2016/09/11 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python解包概念及实例
2021/02/17 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
canvas烟花特效锦集
2018/01/17 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
企划专员岗位职责
2013/12/09 职场文书
迎国庆演讲稿
2014/09/15 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
匿名信格式范文
2015/05/27 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书