一種運算受限的線性表
堆棧,又名棧(stack),是一種運算受限的線性表。它限定僅在表尾進行插入和刪除操作的線性表。這一端被稱爲棧頂,相對地,把另一端稱爲棧底。向一箇棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成爲新的棧頂元素;從一箇棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成爲新的棧頂元素。
堆棧是一種執行“後進先出”算法的數據結構。它是在內存中開闢一箇存儲區域,數據一箇一箇順序地存入(也就是“壓入——push”)這個區域之中。有一箇地址指針總指向最後一箇壓入堆棧的數據所在的數據單元,存放這個地址指針的寄存器就叫做堆棧指示器。開始放入數據的單元叫做“棧底”。數據一箇一箇地存入,這個過程叫做“壓棧”。在壓棧的過程中,每有一箇數據壓入堆棧,就放在和前一箇單元相連的後面一箇單元中,堆棧指示器中的地址自動加1。讀取這些數據時,按照堆棧指示器中的地址讀取數據,堆棧指示器中的地址數自動減 1。這個過程叫做“彈出pop”。如此就實現了“後進先出”的原則存取。