基于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实现生成简单的Makefile文件代码示例
Mar 10 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
Python request使用方法及问题总结
Apr 26 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
python用什么编辑器进行项目开发
Jun 17 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
用 Python 元类的特性实现 ORM 框架
May 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缓存的详解
2013/05/15 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
php计算函数执行时间的方法
2015/03/20 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
js定时器实例分享
2016/12/20 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
Python中字符串的修改及传参详解
2016/11/30 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python书籍信息爬虫实例
2018/03/19 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Python numpy数组转置与轴变换
2019/11/15 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
日语专业毕业生自荐信
2013/11/11 职场文书
自荐信范文
2013/12/10 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS