單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點由元素和指標構成,元素是儲存資料的儲存單元,指標是連線每個結點的位址資料,本文將介紹什麼是單鏈表以及單鏈表的翻轉,主要內容如下:
什麼是單鏈表
遍歷反轉單鏈表
遞迴反轉單鏈表
什麼是單鏈表
遍歷反轉單鏈表
記住一點,鍊錶反轉實際上就是將鍊錶中的指標指向相反方向,假設單鏈表為 a->b->c->d,反轉後則為 d->c->b->a,通過遍歷方式反轉單鏈表就是將每個結點依次反轉。
依次反轉時,a 結點的 next 指標指向 null, 然後 b 結點的 next 的指標指向 a 結點,最終遍歷完成單鏈表的反轉,遍歷反轉單鏈表圖示如下:
具體**如下:
/**
* 鍊錶反轉(遍歷)
* * @param head
* @return
*/public node
reverse
(node
head)
return tempnode;
}
遞迴反轉單鏈表
第二種反轉單鏈表的方式就是遞迴,核心思想就是大問題轉小問題,通俗來講就是多個結點的單鏈表都是都可以進一步劃分為更小的單鏈表,如乙個節點的單鏈表就是它本身,兩結點點的單鏈表 a->b->null,反轉時將相鄰結點指標反向即可,即將結點 b 的 next 指標指向 a,此時 a 的 next 指標還是指向 b,所以需要將 a 的 next 指標指向 null,**表示如下:
// 鍊錶a->b->null反轉
b.next = a;
a.next = null;
使用遞迴方式反轉單鏈表圖示如下:
具體**如下:
/**
* 鍊錶反轉(遞迴)
* * @param head
* @return
*/public node
reverse
(node
head)
// newnode即最終反轉後的頭結點
node
newnode =
reverse1
(head.next)
; head.next.next = head;
head.next = null;
return newnode;
}
如上介紹了單鏈表及其反轉的兩種方式,如有錯誤歡迎指正。
秒懂單鏈表及其反轉 reverse
什麼是鍊錶,這種資料結構是由一組node組成的,這群node一起表示了乙個序列。鍊錶是最普通,最簡單的資料結構 實體地址不連續 它是實現其他資料結構如stack,queue等的基礎。鍊錶比起陣列來,更易於插入,刪除。node可以定義如下 typedef int element type typede...
單鏈表反轉
單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 include includestruct node 3 1 4 6 2 1 1 3 4 6 2 2 4 1 3 6 2 3 6 4 1 3 2 4 2 6 4 1 3 5 迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成 比如,上面第 1 行到第 2...
反轉單鏈表
include stdafx.h include include using namespace std struct listnode typedef listnode plistnode typedef plistnode list list creatlist return head void...