⑴ 堆棧的棧底和棧頂是什麼關系
堆棧的棧底和棧頂是相對的。一端被稱為棧頂,相對地,就把另一端稱為棧底。
棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。一端被稱為棧頂,相對地,就把另一端稱為棧底。
堆棧按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。
(1)棧在物理上是什麼擴展閱讀:
計算機中的堆棧主要用來保存臨時數據,局部變數和中斷/調用子程序程序的返回地址。在棧操作過程中,有一個專門的棧指針(習慣上稱它為TOP),指出棧頂元素所在的位置。堆棧指針總是指向棧頂元素。堆棧可以使向下生長的(向低地址),也可以是向上生長的顫答卜。
如果堆棧是向上生長的,數據入舉蘆棧的時候,堆棧指針先加1,再壓棧。出棧的時候先彈出數據,堆棧指針再減1。如果堆棧是向下茄穗生長的,數據入棧時指針將減1,數據出棧時指針將加1。
⑵ 數據結構分為邏輯結構和儲存結構,循環隊列和棧分別屬於什麼結構
循環隊列和棧都是線性結構,是邏輯結構的一種。而存儲結構是數據在計算機中的表示,循環隊列在計算機內是順序存儲結構,棧在計算機內可是以順序也可以是鏈式。所以循環隊列和棧都是線性邏輯結構,不能說循環隊列和棧是存儲結構,只能說它們在計算機內的存儲結構
⑶ 匯編里push入棧的棧頂物理上位於哪裡入棧後棧頂指針為什麼應該減一
在8086匯編里,push入棧的棧頂,物理上的地址由段地址寄存器SS和堆棧指針寄存器SP確定。位元組型數據入棧後棧頂指針減一,一方面為皮隱搭下次堆燃拿棧操作做准備,另一方面說明堆棧的結構是自底向上的。注意,堆棧指針根據指令操作數自動調整,但不見得攜雀一定是加減1.