棧的結構相當於生活中常見的一端封閉,一端開頭的容器,如下圖
底部封死後,只能通過上邊的埠來訪問東西,即先放入的後取出。棧就是這樣一種結構。
棧:是一種線性資料結構,並且棧中的元素只能先入後出,並且最早進入的元素存放的位置叫棧底(封閉端),最後進入的元素存放的位置叫棧頂(開口端)。可以通過陣列或者鍊錶來實現棧。
* 通過陣列來模擬棧
*/class
arraystack
/** * 判斷是否滿棧
* @return
*/public
boolean
isfull()
/** * 判斷是否空棧
* @return
*/public
boolean
isempty()
/** * 入棧
* @param data
*/public
void
push
(int data)
stack[top]
= data;
top++;}
/** * 出棧
*/public
intpop()
top--
;return stack[top];}
public
void
showstack()
for(
int i= top-
1; i>=
0; i--)}
}
public
class
arraystackdemo
catch
(exception e)
break
;case
"exit"
: scanner.
close()
; loop =
false
; system.out.
println
("程式退出~~~");
break
;default
:break;}}}}
陣列模擬棧
在資料結構中棧是一種線性結構也是有序列表,棧的特點就是 filo 先進後出 棧是限制線性表中元素的增加和刪除只能在一端進行的特殊線性表,變化的一端為棧頂 top 固定的一端棧底 bottom 在學習棧時我們可以把它想象成乙個桶,依次放入東西,在取東西時只能從上面依次取出,不可能直接取出下面的東西。棧...
雞蛋棧(陣列模擬棧)
繼佇列之後,我們又來學習一種新的資料結構 棧。將佇列的頭部封閉後,就構成了棧這種資料結構,原來佇列頭部就是棧底,原來佇列的尾部就是棧頂。棧與佇列的不同就在於棧的底端是封閉的。所以,棧的插入和刪除操作只能在棧的一端進行,即棧頂。棧的插入操作稱為入棧,刪除操作稱為出棧。底 頂 底 頂 第二行輸入乙個數n...
單調棧(陣列模擬)
1 n 1e5 1 數列中元素 1e9 輸入樣例 53 4 2 7 5 輸出樣例 1 3 1 2 2 思路 對於這種題顯然是可以暴力解決的,但要是想要優化一下就得思考一下。本題的意思是找到離某個數a z 最近的左邊的小於它的數 那麼這裡面就有個關係了 可以用乙個棧來存這些左邊的數,若x y z,且a...