基于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 相关文章推荐
Python3里的super()和__class__使用介绍
Apr 23 Python
Python sys.argv用法实例
May 28 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
python dict 相同key 合并value的实例
Jan 21 Python
python的sorted用法详解
Jun 25 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
在Python中实现函数重载的示例代码
Dec 12 Python
Cython编译python为so 代码加密示例
Dec 23 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
python实现无边框进度条的实例代码
Dec 30 Python
Python实现一个论文下载器的过程
Jan 18 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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
JS跨域总结
2012/08/30 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
js图片预加载示例
2014/04/30 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
Python中asyncore的用法实例
2014/09/29 Python
Python中的Matplotlib模块入门教程
2015/04/15 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python 实现倒排索引的方法
2018/12/25 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
启动一个线程是用run()还是start()
2016/12/25 面试题
酒店总经理欢迎词
2014/01/15 职场文书
安全例会汇报材料
2014/08/23 职场文书
会计简历自我评价
2015/03/10 职场文书
工作证明格式范文
2015/06/15 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
电台广播稿范文
2015/08/19 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python