leetcode206. 反轉連結串列

陈晓猛發表於2024-03-13

一、 連結串列(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    

相關文章