反轉鍊錶(兩種實現)

2021-09-12 04:15:43 字數 778 閱讀 4089

反轉鍊錶

反轉乙個單鏈表。

示例:輸入: 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 ...