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

leetcode206. 反转链表

时间:2024-03-13 22:47:18浏览次数:32  
标签:结点 cur 反转 head next 链表 leetcode206

一、 链表(Linked List)
链表,是线性表的链式存储结构。一个链表中有若干个结点,每个结点都包含数据域和地址域两部分。数据域用于存储元素,地址域用于存储前驱或后继的地址。

单链表: 每个结点只有一个地址域的线性链表;
双链表: 每个结点都有两个地址域,分别指向前驱结点和后继结点。

 

 

二、实战
做链表题有一个很重要的点,就是在一开始不熟悉的时候要勤动手!多画!把过程画出来!

 

206. 反转链表  给你单链表的头节点 head ,请你反转链表,并返回反转后的链表

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

思路: 这道题目的思路比较简单,就是修改指针的指向。画图就能比较直观的看出来。

 输入:1->2->3->4->5->NULL

 输出:5->4->3->2->1->NULL

 

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        cur=head
        pre=None
        while cur:
            temp=cur.next # 保存一下 cur的下一个节点,因为接下来要改变cur->next
            cur.next=pre
            pre=cur
            cur=temp
        return pre    

 

标签:结点,cur,反转,head,next,链表,leetcode206
From: https://www.cnblogs.com/chenxiaomeng/p/18071719

相关文章

  • 【OJ】K 个一组翻转链表
    题目基本思路:用计数+栈实现分段,K个一组地翻转链表。#include<bits/stdc++.h>#include<stack>usingnamespacestd;structlist_node{intval;structlist_node*next;};list_node*input_list(){intval,n;scanf("%d",&n);list_node*phea......
  • 《牛客》-D小红数组操作 (链表)
    思路:采用链表进行动态维护即可我们采用map集合来模拟链表结构(用结构体也是可以的)就是输出需要一点点思考.ACcode:#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongmap<int,int>l,r;intq,x,y,op,k;voidsolve(){ cin>>q; while(q--){ cin>>o......
  • 142. 环形链表 IIc
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*detectCycle(structListNode*head){structListNode*slow=head,*fast=head;while(fast&&fast->next......
  • JS 链表 - 笔记
    代码:classListNode{/***@constructor*@param{number}val*@param{ListNode}next*/constructor(val,next){this.val=(val===undefined?0:val);this.next=(next===undefined?null:next);......
  • K 个一组翻转链表
    题目:structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(int_val):val(_val),next(nullptr){}ListNode(int_val,ListNode*_next):val(_val),next(_next){}};classSolution{public:ListNod......
  • 力扣148排序链表--复习归并和快速排序
    递归的归并排序归并排序主要流程是拆分--排序--合并--排序--合并//拆分voidmergeSort(vector<int>&nums,intstart,intend){ if(start>=end)return; intmid=start+(end-start)/2; mergeSort(nums,start,mid); mergeSort(nums,mid+1,end); //最后一层排......
  • 数据结构——线性表2(链表)
    【基本知识】链表是一种常见的数据结构,用于存储和组织数据。它由一系列节点组成,每个节点包含两部分:数据(data)和指向下一个节点的指针(*next)。链表中的节点可以在内存中不连续地分布,通过指针将它们连接起来。链表有多种类型,其中最常见的是单向链表和双向链表。在单向链表中,......
  • 链表基础知识详解
    引言在计算机科学中,数据结构是存储、组织数据的方式。而链表,作为一种基础而强大的数据结构,因其独特的特性,在多种算法和应用场景中拥有不可替代的地位。什么是链表,为什么要使用链表链表(LinkedList)是一种线性表,但与数组不同的是,链表中的元素在内存中并不是连续放置的。每......
  • 动态链表学习笔记:查找,插入与删除
    目录情境引入:一、数据的查找1.要求:2.思路:3.程序:4.运行:二、数据的插入 1.要求:2.思路: 3.程序: 4.运行:三、数据的删除1.要求:2.思路:3.程序:4.运行四、调整与小结:优化:运行情境引入:        学习了动态链表的输入输出后,若还需要对其进行进一步的操作,......
  • leetcode160.链表相交
    160.相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结......