單鏈表反轉

2021-07-11 04:00:03 字數 976 閱讀 9192

問題很簡單,只要你靜下心來想,很容易實現,中間邏輯不弄錯就行

所以這裡我們就不畫圖來解釋了

首先,我們用currentnextnodethird分別表示當前節點當前節點的下乙個節點相對於當前節點的下下乙個節點

也就是說

nextnode = current->next;

third = nextnode->next;

接下來我們繼續:

儲存當前節點(第乙個)的next,當前節點(第乙個)指向第三個(第二個的next),第二個指向(表頭的next)變為鍊錶首,表頭指向第二個(之前儲存的當前節點(第乙個)的next)

假設我們的鍊錶是這樣的:

begin->1->2->3->4->5->end

一次變化後:

begin->2->1->3->4->5->end

二次變化後:

begin->3->2->1->4->5->end

三次變化後:

begin->4->3->2->1->5->end

四次變化後:

begin->5->4->3->2->1->end

ok!完成了

也就是每次把當前節點的後面乙個提到最前面去

偽**如下:

current = l->next;

while(current)

迴圈一遍就行了

除此之外,暴力一點的方式就直接整乙個新的鍊錶,倒序重新存一遍就行了。。

總之,要麼時間換空間,要麼空間換時間,具體情況具體分析

單鏈表反轉

單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 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...

單鏈表反轉

想起很早以前某次面試,面試官很嚴肅的要求我現場手寫單鏈表反轉的 哥虎軀一震,心想 不就需要要個臨時變數來記錄位址嗎,用得著這樣煞有介事?雖然在那之前我的確沒寫過這個程式,哈哈哈 當時我草草寫了十來行 面試官不等我完成,就直接拿過去開始問問題。不知道是不是因為抗壓能力不足,在面試官的不斷 盤問 下,哥...