day4--链表内指定区间反转

news/2024/11/8 22:37:08/

迭代方法

1. 第m个节点的前一个节点pre和第n个节点;

2. 将第m个节点到第n个节点的链表部分反转;

3. 将pre节点的next指向反转后链表的头节点,将反转后链表的尾节点的next指向n+1节点。

/*** struct ListNode {*	int val;*	struct ListNode *next;* };*/#include <bits/types/struct_tm.h>
#include <cstddef>
class Solution {
public:/*** * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类*/ListNode* reverseBetween(ListNode* head, int m, int n) {// write code hereListNode *new_head=new ListNode(-1);//设置虚拟头节点ListNode *start, *tmp, *phead;new_head->next=head;//找到区间左端点phead=new_head;start=head;//start从第一个元素开始for(int i=1; i<m; i++){phead=start;start=start->next;}for(int j=1; j<=n-m; j++){tmp=start->next;start->next=tmp->next;tmp->next=phead->next;phead->next=tmp;}return new_head->next;}
};

设置虚拟头结点的作用

1. 简化链表操作

在链表操作中,如果不使用虚拟头结点,我们需要针对头节点和其他节点分别进行操作,这会导致代码的重复和冗余。而设置虚拟头结点后,我们可以将头节点和其他节点一视同仁,从而简化链表操作的实现。

2. 处理边界情况

当链表为空时,我们需要特殊处理头节点。如果使用虚拟头结点,我们可以省去这个特判,因为虚拟头结点始终存在。

3. 方便删除操作

在链表中,删除头节点时需要特殊处理。如果使用虚拟头结点,我们可以将虚拟头结点作为头节点的前一个节点,从而将删除头节点的操作转化为删除第二个节点的操作,避免了特判

4. 方便插入操作

在链表中,插入头节点时需要特殊处理。如果使用虚拟头结点,我们可以将虚拟头结点作为头节点的前一个节点,从而将插入头节点的操作转化为插入第二个节点的操作,避免了特判

综上所述,设置虚拟头结点可以简化链表操作的实现,同时可以避免特判和处理边界情况的麻烦。因此,在链表操作中,设置虚拟头结点是一个常见的技巧。


http://www.ppmy.cn/news/76670.html

相关文章

数据库的关系代数表达式

数据库的关系代数表达式 关系代数是一种用于描述和操作关系数据库的形式化语言。它提供了一组基本操作&#xff0c;包括选择、投影、并、差、笛卡尔积等&#xff0c;可以用来表示和操作关系数据库中的数据。 基本操作 选择&#xff08;Selection&#xff09;&#xff1a;从关…

使用 SD-WAN 实现企业级 WAN 敏捷性、简易性和性能

VMware SD-WAN 提高了敏捷性和成本效益&#xff0c;同时确保跨 WAN 的应用性能。 当今的分支机构用户正在使用更多的广域网 (WAN) 带宽&#xff0c;因为他们需要通过 Zoom、WebEx、Microsoft 365 等工具进行在线协作&#xff0c;更多地用到 “软件即服务”(SaaS) 和云计算服务…

多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测

多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测 目录 多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-BiLSTM遗传算法优化双向长短…

加密与解密 调试篇 动态调试技术 (二)

我们在 (一)中调试了一个程序 接着我们开始继续学习 常见的断点 这里有 INT 3断点 硬件断点 内存断点 消息断点等 1.INT 3 断点 我们在OllyDbg中 可以使用 命令 bp 或者 F12进行断点 INT3断点 就是在程序中 对该位置的代码 进行替换 替换为INT3 INT3 是一个软中断指令…

go手写Redis(1)之协议说明

手写Redis 参考大佬的go实现redis&#xff0c;自己实现一个简单版本的用于学习go以及网络编程相关 https://github.com/HDT3213/godis https://coding.imooc.com/class/576.html #慕课网课程 源码地址&#xff1a; https://gitee.com/haijun1998/go_redis RESP协议 Redis Ser…

C语言基础知识:位与位字段

目录 位与字节 位 比特 字节 对齐特性 位字段 位与字节 位 二进制数系统中&#xff0c;每个0或1就是一个位(bit)&#xff0c;位是数据存储的最小单位。其中8 bit就称为一个字节&#xff08;Byte&#xff09;。计算机中的CPU位数指的是CPU一次能处理的最大位数&#xff0…

node + alipay-sdk 沙箱环境简单测试电脑网站支付

正式上线需要上传营业执照&#xff0c;不知道怎么去申请一个。。。。。 使用沙箱测试&#xff0c;首先前往支付宝开放平台控制台可看到左下方的沙箱测试链接&#xff1a; 然后设置接口加签方式&#xff0c;选择系统默认密钥&#xff1a; 系统默认密钥 -> 公钥模式 -> 查看…

AI在狂飙,ChatGPT-4可直接在iPhone上使用啦

今天凌晨&#xff0c;OpenAI 正式在 App Store 推出了 ChatGPT 的 iOS app&#xff0c;瞬间冲上苹果商店免费榜第二名&#xff0c;效率榜第一名。 于是兴致勃勃的去下载体验了一番。整体不错&#xff0c;以后手机使用官方的 ChatGPT 更方便啦&#xff01;而且使用 GPT4 不再麻…