單向鍊錶反轉

2021-07-02 02:30:48 字數 510 閱讀 4974

**於:

題目:已知單向鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 ( intel)

解答:我們假設單向鍊錶的節點如下:

這個題目算是考察資料結構的最基礎的題目了,有兩種方法可以解此題:

方法一:

這是一般的方法,總之就是用了幾個臨時變數,然後遍歷整個鍊錶,將當前節點的下一節點置為前節點。

方法二:

node* temp = reserve(pnode->next, head);//

遞迴        temp->next = pnode;//

將下一節點置為當前節點,既前置節點

return pnode;//

返回當前節點

這個方法是採用了遞迴演算法,也就是在反轉當前節點之前先反轉其後繼節點,說白了其實就是利用函式的呼叫堆疊構建了乙個臨時鍊錶罷了,挺廢的乙個演算法,權當作是寫著好玩,沒有什麼實在的意義。

採用此演算法需要注意的是,頭結點必須要傳入的是引用,因為在遞迴跳出的時候要切斷鍊錶,否則鍊錶將會形成乙個回環

單向鍊錶反轉

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

反轉單向鍊錶

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

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...