劍指Offer 從尾到頭列印鍊錶(兩種解法)

2021-10-03 23:19:47 字數 1044 閱讀 5222

1.問題描述

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個vector。

2. 解題思路

方法1:使用stl中的stack來輔助完成

①:根據stack(堆疊)的先進後出原理,實現鍊錶資料的反轉

②:首先將鍊錶遍歷,輸出到stack物件中

③:然後將stack中的元素乙個個彈出到vector中,輸出vector

方法2:使用遞迴,列印鍊錶(附原始碼)

①:遞迴,其實就是類似於堆疊,先進後出的原理,先呼叫的,後執行

②:遍歷整個鍊錶,只要結點不為空,遞迴呼叫函式。

③:當結點為空時,返回。把結點push到vector裡去。根據先呼叫後執行。故而,頭結點會在最後乙個插入,以此類推

④:在這個遞迴演算法中,為了**的整潔性,我額外申請了乙個結點。有更好主意的夥伴歡迎指導,共同學習

3. c/c++源**

方法1:stl中的stack

struct listnode };

vector<

int>

printlistfromtailtohead

(listnode* node)

while

(!m_stack.

empty()

)return m_vec;

}

方法2:遞迴呼叫

struct listnode };

void

recursiveadd

(vector<

int>

&m_vec,listnode*node)

return;}

vector<

int>

printlistfromtailtohead

(listnode* head)

劍指Offer 從尾到頭列印鍊錶

題目1511 從尾到頭列印鍊錶 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1082 解決 350 題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入 每個輸入檔案僅包含一組測試樣例。每一組測試案例包含多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的...

劍指offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入描述 輸入為鍊錶的表頭 輸出描述 輸出為需要列印的 新鍊錶 的表頭 分析 題目本意是用的棧結構的先入後出,但是有了容器類的高階方法之後,使用棧的意義就不大了。c struct listnode class solution listnode p hea...

劍指Offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。個人認為如果本題就只是列印的話,最好不要反轉鍊錶 你什麼時候見過列印函式改變資料結構了的 我的思路 儲存順序值,然後反轉。注意 1 reverse vprint.begin vprint.end algorithm的使用!2 重新構造。以上兩種衡量選擇。另...