基于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 18 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
Python实现excel转sqlite的方法
Jul 17 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
实例介绍Python中整型
Feb 11 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
在django view中给form传入参数的例子
Jul 19 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/09/09 PHP
php smarty函数扩展
2010/03/15 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
Vue实现购物车功能
2017/04/27 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
python读取和保存图片5种方法对比
2018/09/12 Python
详解python调用cmd命令三种方法
2019/07/08 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
Django xadmin安装及使用详解
2020/10/26 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
丑小鸭教学反思
2014/02/03 职场文书
酒店端午节促销方案
2014/02/18 职场文书
我爱我家教学反思
2014/05/01 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
个人业务学习心得体会
2016/01/25 职场文书