劍指offer 從尾到頭列印鍊錶

2022-05-24 17:03:08 字數 958 閱讀 5589

我一開始想到的是遍歷這個鍊錶,遍歷過程中用乙個arraylist儲存裡面的值,然後再從尾到頭遍歷這個arraylist,儲存在新的arraylist裡面返回。

//使用另外乙個arraylist儲存鍊錶的方法

public static arraylistprintlistfromtailtohead(listnode listnode)

arraylistresult=new arraylist();

for(int i=list.size()-1;i>=0;i--)

return result;

}

後來看了劍指offer,發現其實如果是從尾到頭列印鍊錶,由於這個是單向鍊錶,並沒有儲存前乙個鍊錶的值,所以我們只能先從頭到尾列印鍊錶,所謂的「後進先出」,這時候就可以聯想到棧這個資料結構。

stack類是vector類的子類.vector類與arraylist類的區別是,vector是執行緒安全的,即在多執行緒的情況下,允許多個執行緒同時修改vector,但arraylist是執行緒不安全的,需要在**裡保證其同步性,即一次只能有乙個執行緒訪問arraylist.所以vector的效能是比arraylist要低的。

public static arraylistprintlistfromtailtoheadwithstack(listnode listnode) 

while(!stack.isempty())

return list;

}

由棧又很容易聯想到遞迴。

static arraylistresult;

public static void print(listnode listnode)

} //使用遞迴

public static arraylistprintlistfromtailtoheadwithrecursion(listnode listnode)

劍指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 重新構造。以上兩種衡量選擇。另...