一、 链表(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