什麼是堆疊組織結構?
堆疊 也被稱為後進先出 (LIFO) 列表。它是CPU 中最重要的特性之一。它儲存資料,以便最後儲存的元素首先被檢索。堆疊是一個帶有地址暫存器的記憶體單元。該暫存器影響堆疊的地址,稱為堆疊指標 (SP)。堆疊指標持續地影響位於堆疊頂部的元素的地址。
它可以將元素插入堆疊或從堆疊中刪除元素。插入操作稱為 push 操作,刪除操作稱為 pop 操作。在計算機堆疊中,這些操作透過增加或減少 SP 暫存器來模擬。
暫存器堆疊
堆疊可以排列為一組記憶體字或暫存器。考慮一個如圖所示排列的 64 字暫存器堆疊。堆疊指標暫存器包含一個二進位制數,它是堆疊頂部元素的地址。三個元素 A、B 和 C 位於堆疊中。
元素 C 位於堆疊頂部,堆疊指標持有 C 的地址,即 3。頂部元素透過讀取地址 3 處的記憶體字並將堆疊指標遞減 1 來從堆疊中彈出。然後,B 位於堆疊頂部,SP 持有 B 的地址,即 2。可以插入一個新字,透過將堆疊指標遞增 1 並將字插入到遞增的位置來壓入堆疊。

堆疊指標包含 6 位,因為 26 = 64,並且 SP 不能超過 63(二進位制中的 111111)。畢竟,如果將 63 遞增 1,則結果為 0(111111 + 1 = 1000000)。SP 只儲存六個最低有效位。如果將 000000 遞減 1,則結果為 111111。
因此,當堆疊已滿時,一位暫存器“FULL”被設定為 1。如果堆疊為空,則一位暫存器“EMTY”被設定為 1。資料暫存器 DR 儲存構成或讀出的二進位制資訊堆疊。
首先,將 SP 設定為 0,EMTY 設定為 1,FULL 設定為 0。現在,由於堆疊未滿 (FULL = 0),因此使用 push 操作插入新元素。
push 操作按如下方式執行:
| SP←SP + 1 | 它可以遞增堆疊指標 |
| K[SP] ← DR | 它可以將元素寫入堆疊頂部 |
| 如果 (SP = 0) 則 (FULL ← 1) | 檢查堆疊是否已滿 |
| EMTY ← 0 | 標記堆疊非空 |
堆疊指標遞增 1,並將下一個較高字的地址儲存在 SP 中。來自 DR 的字使用記憶體寫入操作插入到堆疊中。第一個元素儲存在地址 1 處,最後一個元素儲存在地址 0 處。如果堆疊指標位於 0,則堆疊已滿,並且“FULL”設定為 1。這是 SP 位於 63 位置並且在遞增 SP 後,最後一個元素儲存在地址 0 處的條件。當元素儲存在地址 0 處時,堆疊中沒有更多空暫存器。堆疊已滿,“EMTY”設定為 0。
如果堆疊非空(如果 EMTY = 0),則從堆疊中刪除新元素。pop 操作包括以下微操作序列:
| DR←K[SP] | 它可以從堆疊頂部讀取元素 |
| SP ← SP – 1 | 它可以遞減堆疊指標 |
| 如果 (SP = 0) 則 (EMTY ← 1) | 檢查堆疊是否為空 |
| FULL ← 0 | 標記堆疊未滿 |
從堆疊中讀取頂部元素並傳輸到 DR,從而遞減堆疊指標。如果堆疊指標達到 0,則堆疊為空,並且“EMTY”設定為 1。這是從位置 1 讀取元素並將 SP 遞減 1 的情況。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP