棧:後進先出。(lifo結構)
棧是限定僅在表尾進行插入和刪除操作的線性表。允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料元素的棧稱為空棧。
功能:用於瀏覽器的後退操作,以及word等軟體的撤銷操作。
兩棧共享空間,用乙個陣列來儲存兩個棧。
/*兩棧共享空間結構*/
typedef
struct
sqdoublestack;
對於兩棧共享空間的push方法,除了要插入元素值引數外,還需要有乙個判斷是棧1還是棧2的棧號引數 stacknumber:
/*插入元素e為新的棧頂元素*/
status push
(sqdoublestack *s,selemtype e,
int stacknumber)
因為在開始已經判斷了是否有棧滿的情況,所以後面的top1+1或top2-1是不擔心溢位問題的。對於兩棧共享空間的pop方法,引數就只是判斷棧1 棧2的引數stacknumber:
/*若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error*/
status pop
(sqdoublestack *s,selemtype *e,
int stacknumber)
else
if(stacknumber==2)
return ok;
}
棧方法 LIFO 隊方法 FIFO
1 棧方法 lifo last in first out,後進先出 最新新增最早被移除。棧中項的插入 叫做推入 和移除 叫做彈出 只發生在乙個位置 桟的頂部。模擬 push 方式可以接收任意數量引數,它逐個新增到陣列末尾,並修改陣列長度。pop 方法從陣列末端最後一項,並減少length var c...
實現資料結構中的棧 後進先出LIFO
棧是什麼?如果用生活中最常見的例子,我想到是書本的放置 當然這是部分人喜歡的做法 但是給人的感覺是非常直接的,書本整齊跨一疊在一起,放在最上面的那本最先拿走,放在最底下那本書就最後拿走,形象吧,生活中有很多後進先出的栗子,就不一一說明了,用圖來說明應該很好理解。放在最上面的那本書的位置叫棧頂,棧頂是...
棧的鏈結儲存 鏈棧
通常鏈棧用單鏈表表示,因此其結點結構與單鏈表的結點結構相同。因為只能在棧頂 執行插入和刪除操作,顯然以單鏈表的頭部做棧底是最方面的,而且沒有必要像單鏈表那樣為了運算方便附加乙個頭結點。includeusing namespace std define null 0 struct node class...