zh-hant/docs/chapter_stack_and_queue/summary.md
Q:瀏覽器的前進後退是否是雙向鏈結串列實現?
瀏覽器的前進後退功能本質上是“堆疊”的體現。當用戶訪問一個新頁面時,該頁面會被新增到堆疊頂;當用戶點選後退按鈕時,該頁面會從堆疊頂彈出。使用雙向佇列可以方便地實現一些額外操作,這個在“雙向佇列”章節有提到。
Q:在出堆疊後,是否需要釋放出堆疊節點的記憶體?
如果後續仍需要使用彈出節點,則不需要釋放記憶體。若之後不需要用到,Java 和 Python 等語言擁有自動垃圾回收機制,因此不需要手動釋放記憶體;在 C 和 C++ 中需要手動釋放記憶體。
Q:雙向佇列像是兩個堆疊拼接在了一起,它的用途是什麼?
雙向佇列就像是堆疊和佇列的組合或兩個堆疊拼在了一起。它表現的是堆疊 + 佇列的邏輯,因此可以實現堆疊與佇列的所有應用,並且更加靈活。
Q:撤銷(undo)和反撤銷(redo)具體是如何實現的?
使用兩個堆疊,堆疊 A 用於撤銷,堆疊 B 用於反撤銷。
A ,並清空堆疊 B 。A 中彈出最近的操作,並將其壓入堆疊 B 。B 中彈出最近的操作,並將其壓入堆疊 A 。