基于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版
Dec 07 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python AES加密模块用法分析
May 22 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
python实现大学人员管理系统
Oct 25 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
如何基于Python实现word文档重新排版
Sep 29 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 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 变量定义方法
2009/06/14 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP实现递归的三种方法
2020/07/04 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jquery中radio checked问题
2015/03/16 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
Python 基础知识之字符串处理
2017/01/06 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python小程序实现刷票功能详解
2019/07/17 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
详解python中的lambda与sorted函数
2020/09/04 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
旅游管理本科生求职信
2013/10/14 职场文书
车辆安全检查制度
2014/01/12 职场文书
给实习单位的感谢信
2014/02/01 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
护理人员的自我评价分享
2014/03/15 职场文书
新春文艺演出主持词
2014/03/27 职场文书
毕业生面试求职信
2014/06/23 职场文书
物业保安岗位职责
2014/07/02 职场文书
个人借款协议书范本
2014/11/17 职场文书
工作检讨书怎么写
2015/01/23 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python