首页 > 其他分享 >反转链表

反转链表

时间:2022-12-03 18:01:52浏览次数:39  
标签:pre ListNode cur temp 反转 next 链表

92.反转链表

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表

  1. 构建一个虚拟节点,让它指向原链表的头节点。
  2. 设置两个指针,pre 指针指向以虚拟头节点为链表的头部位置,cur 指针指向原链表的头部位置。
  3. 让着两个指针向前移动,直到 pre 指向了第一个要反转的节点的前面那个节点,而 cur 指向了第一个要反转的节点。
  4. 开始指向翻转操作
  • 1)、设置临时变量 temp,temp 是 cur 的 next 位置,保存当前需要翻转节点的后面的节点,我们需要交换 temp 和 cur
  • 2)、让 cur 的 next 位置变成 temp 的下一个节点
  • 3)、让 temp 的 next 位置变成 cur
  • 4)、让 pre 的 next 位置变成 temp
class Solution {
	public ListNode reverseBetween(ListNode head, int left, int right) {
    	ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode pre = dummy;
        ListNode cur = head;

    	for (int i = 0; i < left - 1; i++) {
        	pre = pre.next;
            cur = cur.next;
        }
        
        for (int i = 0; i < right - left; i++) {
        	ListNode temp = cur.next;
            cur.next = cur.next.next;
        	temp.next = pre.next;
            pre.next =temp;
        }
        return dummy.next;
    }
}

标签:pre,ListNode,cur,temp,反转,next,链表
From: https://www.cnblogs.com/kingmc/p/16948462.html

相关文章

  • 静态链表
    链表的含义:将若干个结构体变量通过结构体指针联系在一起的数据结构。结点的概念:链表中的结构体变量称为链表的结点。链表的结点构成:在链表结点中纪要存储数据,也要存储下一个......
  • 算法--数组、链表、栈、队列
    一、数组1、删除有序数组中的重复项(简单)题目地址:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/给你一个升序排列的数组nums,请你原地删除重......
  • 不一样的C语言反转字符串
    下面是最近一段时间的C语言初阶考试编程题:题目大意:例如,将一个字符串“Ilikebeijing.”反转成“beijing.likeI”初看这道题目时,很容易犯下的一个错误是“不就是将字符......
  • 反转链表-LeetCode206 改变指向
    LeetCode链接:https://leetcode.cn/problems/reverse-linked-list/题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1:    输入:head=[1,2,......
  • 链表--删除数据
    采用尾插法建立链表typedefstructnode{intage;structnode*next;}link;intmain(){link*head=(link*)malloc(sizeof(link));link*new,*tail;tail=hea......
  • 链表
    1.头插法#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstructpeople{intage;structpeople*next;}link;intma......
  • 剑指offer:反转链表
    题目描述输入一个链表,反转链表后,输出链表的所有元素。1.非递归/*structListNode{intval;structListNode*next;ListNode(intx):val(x),......
  • 剑指offer:二叉搜索树与双向链表
    题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。1.递归/*structTreeNode{intval;s......
  • 剑指offer:复杂链表的复制
    题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。/*structRandomListNode{intlabel;structRandom......
  • 删除有序链表中的重复元素(python)
    重复的留下一个def deleteDuplicates(self , head: ListNode) -> ListNode:        # write code here        #空链表        if ......