反轉鍊錶
反轉乙個單鏈表。方法一-前插法:示例:輸入: 1->2->3->4->5->null
輸出: 5->4->3->2->1->null
這道題目我們可以先建立乙個新的表頭,然後按正序每抓取到乙個原鍊錶的節點,就前插到這個新的煉表裡,最後我們就可以得到乙個恰好為原鍊錶反序的新鍊錶:
struct listnode*
reverselist
(struct listnode* head)
return new;
}
方法二-三指標法
這裡還有一種實現思路:當每次到達乙個節點時,便修改節點使它指向前乙個節點,這樣我們就在原位置實現了鍊錶反轉,因為題目是單向鍊錶,所以我們需要設定乙個prev來儲存前乙個節點的位置,再用乙個next變數存放下乙個節點,使用go變數來遍歷鍊錶,這就是三指標法;
struct listnode*
reverselist
(struct listnode* head)
//在得到節點時原位置直接改變
struct listnode* prev =
null
;struct listnode* next = head->next;
for(
struct listnode* go = head;go!=
null;)
}return prev;
}
LeetCode206 鍊錶反轉兩種實現
迭代實現 小結反轉乙個單鏈表。輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 其實拿到這個題目首先應該想到的是遞迴拆分。1 既然是反轉鍊錶,那我們先從最簡單的兩個節點開始 2 拿到這個最簡單的鍊錶,我們不難看出。因為2的下乙個節點是空,所以反轉後,2就是頭結點。所以,我們可以...
Java單鏈表實現 附上兩種鍊錶反轉到實現方式
前幾天因為乙個現場演示需要,現場實現手動實現了乙個單鏈表,今天整理臨時檔案看到了這塊 就簡單整理了一下,發上來記錄一下。created by leon.l on 2018 3 29.desc 模擬鍊錶 public class linkedobj public linkedobj public vo...
鍊錶排序的兩種實現方法
本程式演示鍊錶的兩種排序方法 當然還可以其他的一些排序方法 比如選擇法 但是只要搞懂了鍊錶的連線,插入方法 其他排序方法都易懂 include using namespace std struct list list creat 建立鍊錶的方式有點奇怪,可是不想改了,呵呵 p1 next null ...