基于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入门篇之正则表达式
Oct 20 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
Python正则捕获操作示例
Aug 19 Python
对Python 3.5拼接列表的新语法详解
Nov 08 Python
python读取xlsx的方法
Dec 25 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
python向图片里添加文字
Nov 26 Python
python随机生成库faker库api实例详解
Nov 28 Python
Python while循环使用else语句代码实例
Feb 07 Python
python连接PostgreSQL过程解析
Feb 09 Python
python PIL模块的基本使用
Sep 29 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP 输出缓存详解
2009/06/20 PHP
php 获取可变函数参数的函数
2009/08/26 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
大学生职业生涯规划书前言
2014/01/09 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
工作失职检讨书
2015/01/26 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
终止合同协议书范本
2016/03/22 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
Python包argparse模块常用方法
2021/06/04 Python