天天看點

【劍指offer】遞歸循環兩種方式反轉連結清單

轉載請注明出處:

    本文分别用非遞歸和遞歸兩種方式實作了連結清單的反轉,在九度OJ上AC。

<dl></dl>

<dt>題目描述:</dt>

<dd></dd>

輸入一個連結清單,反轉連結清單後,輸對外連結表的所有元素。

(hint : 請務必使用連結清單)

<dt>輸入:</dt>

輸入可能包含多個測試樣例,輸入以EOF結束。

對于每個測試案例,輸入的第一行為一個整數n(0&lt;=n&lt;=1000):代表将要輸入的連結清單的個數。

輸入的第二行包含n個整數t(0&lt;=t&lt;=1000000):代表連結清單元素。

<dt>輸出:</dt>

對應每個測試案例,

以此輸對外連結表反轉後的元素,如沒有元素則輸出NULL。

<dt>樣例輸入:</dt>

<dt>樣例輸出:</dt>

    很明顯,翻轉後,尾節點和頭結點互換了。

    我們需要設定三個指針,分别指向目前要反轉的節點、目前要反轉節點的前一個節點、目前要反轉節點的下一個節點。要注意連結清單為空,以及隻有一個頭結點的情況。

    非遞歸實作如下:

    遞歸實作如下:

    根據題目要求,測試代碼如下:

<code>/**************************************************************</code>

<code>    </code><code>Problem: 1518</code>

<code>    </code><code>User: mmc_maodun</code>

<code>    </code><code>Language: C</code>

<code>    </code><code>Result: Accepted</code>

<code>    </code><code>Time:150 ms</code>

<code>    </code><code>Memory:2364 kb</code>

<code>****************************************************************/</code>

繼續閱讀