基于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 zip文件 压缩
Dec 24 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
Python制作Windows系统服务
Mar 25 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
Python实现识别手写数字 Python图片读入与处理
Mar 23 Python
Python制作exe文件简单流程
Jan 24 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
解析python的局部变量和全局变量
Aug 15 Python
Python数组并集交集补集代码实例
Feb 18 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
Python数据分析入门之数据读取与存储
May 13 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
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
Python常用算法学习基础教程
2017/04/13 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
十八大闭幕感言
2014/01/22 职场文书
优秀员工演讲稿
2014/05/19 职场文书
超市店庆活动方案
2014/08/31 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
刑事起诉书范文
2015/05/19 职场文书
铁人观后感
2015/06/16 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
小学数学教学随笔
2015/08/14 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫