基于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程序抓取网页的HTML信息的一个小实例
May 02 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python语言基本语句用法总结
Jun 11 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 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
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP目录操作实例总结
2016/09/27 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Django框架models使用group by详解
2020/03/11 Python
Python绘制数码晶体管日期
2021/02/19 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
民族团结好少年事迹材料
2014/08/19 职场文书
2014年村官工作总结
2014/11/24 职场文书
英语复习计划
2015/01/19 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis