單向鍊錶的反轉

2021-12-29 16:30:21 字數 969 閱讀 6045

今天晚上閒著沒事幹,複習複習鍊錶反轉,因為自己不是學計算機專業的,所以基礎知識比較薄弱,總是會把看過的東西忘掉,所以要多複習,以便不時之需。

單向鍊錶反轉其實很簡單,有兩種常規方式:

1. 迴圈遍歷完成反轉。

這種方法比較簡單,就是用兩個指標,和乙個輔助指標,pre, cur , ne , 分別指向head,head->next, head->next->next,節點,也就是前三個節點。

然後把 pre = cur , cur = ne, ne = ne->next, **:

struct link {

int data;

link* next;

void reverse(linka*& head)void reverse(link *& head)

link* pre, cur , ne;

pre = head;

cur = head - >next;

while (cur)

ne = cur - >next;

cur -> next = pre;

pre = cur;

cur = ne;

head ->next = null;

head = pre;

簡單的很,我就是這麼笨,這麼簡單的**還要寫半天,大神勿噴。。。

下面介紹遞迴的演算法:

link* reverse(link* p, link*& head)

if( p == null || p - > next == null)

head = p;

return p;

else

link* tmp = reverse(p->next, head);

tmp->next = p;

return p;

遞迴也是很簡單的,看不懂的朋友可以跟我交流。

以後還是要多學習,多複習,形成習慣,不斷提高自己的水平。為自己加油!

單向鍊錶反轉

於 題目 已知單向鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 intel 解答 我們假設單向鍊錶的節點如下 這個題目算是考察資料結構的最基礎的題目了,有兩種方法可以解此題 方法一 這是一般的方法,總之就是用了幾個臨時變數,然後遍歷整個鍊錶,將當前節點的下一節點置為前節點。方法二 node tem...

單向鍊錶反轉

一 鍊錶 鍊錶的結構是一種非線性的資料結構,優點是可以充分使用空間,插入和刪除節點的時候不需要遍歷節點速度較快,但是由於其特性在查詢的時候遍歷速度比較慢。每乙個節點在儲存自己的資料的時候,還儲存下乙個節點的物理位置。可抽象為 二 鍊錶反轉 1 新增物理儲存反轉 如圖 123 4null 第一步 生成...

反轉單向鍊錶

反轉單向鍊錶 實現反轉單向鍊錶和雙向鍊錶的函式。如 1 2 3 反轉後變成 3 2 1。輸入描述 第一行乙個整數 n,表示單鏈表的長度。第二行 n 個整數 val 表示單鏈表的各個節點。第三行乙個整數 m 表示雙鏈表的長度。第四行 m 個整數 val 表示雙鏈表的各個節點。輸出描述 在給定的函式內返...