# 206. Reverse Linked List ###### tags: `Python`,`Leetcode` https://leetcode.com/problems/reverse-linked-list/ ## MyCode! ## 解題思路: * **Defnition of Linked list :** 1. 使用 node (節點)來記錄、表示、儲存資料( data ),並利用每個 node 中的 pointer 指向下一個 node ,藉此將多個 node 串連起來,形成 Linked list ,並以 NULL 來代表 Linked list 的終點 2. 通常在面對一個 Linked list 時,能夠公開存取( access )的 node 只有「第一個 node 」 * **Linked List Introduction:**(補充資料) http://alrightchiu.github.io/SecondRound/linked-list-introjian-jie.html * 這一題要 Reverse,所以需要把所有的 pointer 轉向即可: 1. 需要三塊記憶體,分別記憶:要新指向的 node( previous ) 、原先紀錄的 node ( current )、下一個要進入轉向流程的 node ( perceeding ) * current.next 是 perceeding node * previous 是下一個 current.next 要指向的 node 3. 完成這三個指標後,需要執行的步驟: * current.next 指向 previous * current = perceeding (移動 current 至下一個 node ) * perceeding = perceeding.next (把 perceeding 移動到下一個 node) ## 解法 ### Step 1:如果 input 是空的 node ,結束這段程式,無需輸出任何東西 ### Step 2:如果 node.next( 即 perceeding )!= Null,就要轉向 * previous = 0 ,previous 是第二個要被轉向指到的 node ,但最尾巴的 node 都會指向 Null,全域參數設為 0 * current = head,從第一個 node 開始要改變他的 pointer 方向 * perceeding = current , current 轉向後,下一個要轉向的 node 記憶體 ### 流程梳理 1. 如果 node.next( 即 perceeding )!= Null,開始執行下列幾點步驟 2. 把 current.next = previous (把 current pointer 轉向) 3. 把 previous = current (把下一個要轉向被指到的 node 放入 previous 的記憶體) 4. 把 current = perceeding(把下一個有 pointer 要轉向的 node 放入 current 記憶體) 5. perceeding = perceeding.next(後移 perceeding 記憶下一個 node ) * 全部都轉完了,current.next = previous (轉完最後一個) * head = current * return head node
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up