原文:單向鏈表反轉,就地逆置與遞歸反轉(無表頭結點)

最近在看鏈表,今天刷到一道鏈表的反轉題,鏈表反轉可以說是基礎操作,但是可提供的方案也有很多,簡單通過了該題后又學習了一下遞歸反轉,現在把三種方法都公開出來做一個總結。 .就地逆置 .單參數的遞歸逆置 .雙參數的遞歸逆置 一 就地逆置 方法:頭插。 由於這里是不帶表頭結點的單向鏈表,所以頭插會稍微復雜一點,不想往下看的小伙伴也可以直接選擇定義一個臨時表頭結點從頭結點開始遍歷鏈表將每一個鏈表頭插,最后 ...

2019-09-03 21:35 0 390 推薦指數:

查看詳情

鏈表(又稱反轉

  鏈表常作為應屆生面試題,主要考察求職者對鏈表的理解,還有思維能力。的思路主要是保存幾個臨時的指針變量,其實好多面試題都可以通過保存臨時變量的方式來解決。對於此類問題,建議一定不要死記硬背,因為死記硬背一定會隨着時間的推移而忘記,建議按照pPrev,pNode,pNext依次向后推移 ...

Tue Dec 06 08:00:00 CST 2016 1 1264
單向鏈表原地反轉

如果不要求“原地”,正向遍歷原鏈表,頭插法建立一個新的單向鏈表,它就是原鏈表的逆序。 下面利用遞歸的方法將單向鏈表原地逆序。 可以很容易地把遞歸改寫成非遞歸的形式。 NODE* inverse(NODE *head){ if(head==NULL) return ...

Sun Jun 10 01:49:00 CST 2012 0 3535
單向鏈表反轉問題

這次介紹經常在面試中被問到的單向鏈表反轉問題,問題的解決方法有多種 最普通的是從頭到尾掃描鏈表,然后對鏈表進行反轉。 使用單個參數的遞歸方法;使用單個參數是相當於不斷的往鏈表后部深入,並且在每次深入的遞歸中保存了下一個節點和當前節點的信息,再調用遞歸后處理當前節點和下一個節點的關系 ...

Mon Sep 30 04:32:00 CST 2013 1 8753
帶頭結點的單鏈表就地

因為只能順序訪問,所以不能用兩個指針一個一個的顛倒。 想的新思路是:從第二個結點開始,從鏈表上拆下來,往頭結點后面插入。 注意:因為每一次都把第二個元素拆下來,所以指針不用后移,每次都是拆那個位置。 ...

Thu Sep 19 00:45:00 CST 2019 0 427
單向鏈表反轉算法——遞歸版和迭代版

  最近在做筆試題時,遇到一道編程題:單向鏈表反轉算法。一時緊張,沒寫出來就提前交卷了,然而交完卷就想出來了。。。   最初想出來的是遞歸版,遺憾的是沒能做到尾遞歸,后來又琢磨出了迭代版。后來用實際編譯運行測試了一遍,能正常運行。   遞歸版的靈感來源於《Haskell 趣學指南》中非常簡潔 ...

Mon Apr 17 15:38:00 CST 2017 1 11022
C++ 單向鏈表反轉

單向鏈表反轉,一道常見的面試題,動手實現下。 原理就是把cur節點的next節點保存,把next指向pre節點,把之前保存的next節點賦給cur,不斷循環直到next節點為NULL。注意下,退出循環后要把cur節點next指向pre節點。把cur節點返回,大功告成。 如果不用 ...

Fri Jan 24 20:14:00 CST 2014 0 2738
Java實現單向鏈表反轉

0. 環境: Java: jdk1.8.0_91 1. 代碼 2. 實現思路 遞歸:從尾部開始處理 非遞歸:從頭部開始處理 ...

Wed Jun 14 20:00:00 CST 2017 0 2991
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM