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