基于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 map和reduce函数用法示例
Feb 26 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python学习思维导图(必看篇)
Jun 26 Python
python 上下文管理器使用方法小结
Oct 10 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
python可以用哪些数据库
Jun 22 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中常用的输出函数总结
2014/09/22 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
Vue2.0生命周期的理解
2018/08/20 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
js仿淘宝放大镜效果
2020/12/28 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
详解Python的Django框架中的中间件
2015/07/24 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
高尔夫球鞋、服装、手套和装备:FootJoy
2018/12/15 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
国际商务专业求职信
2014/07/15 职场文书
教师考核鉴定意见
2015/06/05 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
详解Laravel制作API接口
2021/05/31 PHP
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android