鍊錶的翻轉

2022-05-30 11:09:09 字數 575 閱讀 2322

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。

struct

listnode

};

方法一:建立節點指標型別堆疊,遍歷鍊錶,將指標壓棧,順次出棧,實現反轉。這個占用記憶體空間較大。

listnode* reverselist(listnode*phead) 

//建立鍊錶list

list=phead;

if(list!=null)

}else

//末尾結點的next指標指向null

list->next=null;

return

phead;

}

思路2:依次遍歷鍊錶,改變節點的指向,注意之前要將下乙個節點的位址賦值給乙個指標next儲存。

事實上,next指標表示去掉已經反轉的鍊錶的第二個節點,pre指標表示反轉過的煉表表頭,phead指標表示去掉已經反轉的鍊錶的表頭。

listnode* reverselist(listnode*phead) 

return

pre;

}

鍊錶的翻轉

如何快速的實現鍊錶的翻轉,比如鍊錶a資料為 str1,str2,str3,str4,str5,str6 翻轉後則變為 str6,str5,str4,str3,str2,str1 針對上述問題我能想到的一種辦法就是以壓棧的方式來實現,其實現思路相對較為簡單,通過定義乙個鍊錶資料結構的資料棧,遍歷鍊錶,...

鍊錶翻轉的方法

鍊錶的翻轉是程式設計師面試 現頻度最高的問題之一,常見的解決方法分為遞迴和迭代兩種。最近在複習的時候,發現網上的資料都只告訴了怎麼做,但是根本沒有好好介紹兩種方法的實現過程與原理。所以我覺得有必要好好的整理一篇博文,來幫忙大家一步步理解其中的實現細節。我們知道迭代是從前往後依次處理,直到迴圈到鏈尾 ...

分析鍊錶翻轉

鍊錶翻轉分兩部分,鍊錶整表翻轉和鍊錶部分翻轉。下面討論非遞迴的做法,遞迴的做法以後有空再說。先說鍊錶整表翻轉,核心四句話 next p.next p.next pre pre p p next 顧名思義,pre是p前面的節點,next是p後面的節點。舉個例子,下圖是乙個鍊錶節點翻轉前的狀態 上面的 ...