基于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 相关文章推荐
简单的编程0基础下Python入门指引
Apr 01 Python
Python脚本在Appium库上对移动应用实现自动化测试
Apr 17 Python
python动态参数用法实例分析
May 25 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python中常用信号signal类型实例
Jan 25 Python
python os.path模块常用方法实例详解
Sep 16 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
基于python实现生成指定大小txt文档
Jul 20 Python
如何基于Python按行合并两个txt
Nov 03 Python
jupyter 添加不同内核的操作
Feb 06 Python
python包的导入方式总结
Mar 02 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/06/02 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
php返回json数据函数实例
2014/10/09 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
javascript第一课
2007/02/27 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Python Django路径配置实现过程解析
2020/11/05 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
信息部岗位职责
2013/11/12 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
个人先进事迹材料
2014/12/29 职场文书
学校开除通知书
2015/04/25 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers