一渠抹、棧
1.棧的定義
棧是一種特殊的線性表,只能在表的一端進行插入刪除元素操作葬项。允許操作的一端稱為棧頂泞当,另一端稱為棧底。處在棧頂位置的元素稱為棧頂元素民珍,如果棧中沒有元素稱為空棧襟士。
棧的操作原則是先進后出(First In Last Out,F(xiàn)ILO)或者后進先出(Last In First Out嚷量,LIFO)陋桂。
可以將棧想象成一個死胡同(死胡同的入口就是棧頂,另一端就是棧底蝶溶;第五戶人家在胡同口章喉,就是棧頂;五戶人家都開車出去了身坐,胡同里沒有車秸脱,此時就是空棧)。里面住了五戶人家部蛇,每戶有一輛車摊唇,第三戶人家要開車出去購物。
(1)打電話給第五家涯鲁,我要出去了巷查,把車挪一下
(2)打電話給第四家,我要出去了抹腿,把車挪一下
(3)第三輛車出去了
(4)第四輛車挪回去
(5)第五輛車挪回去
2.棧的基本操作
(1)初始化一個空棧
(2)判斷是否為空棧
(3)入棧岛请,在棧頂插入一個新的元素
(4)出棧,從棧頂刪除一個元素
(5)取棧頂元素
(6)將非空棧清空
(7)求棧中元素個數(shù)
(8)銷毀棧
3.棧的存儲結(jié)構(gòu)
如定義上說的警绩,棧是一種特殊的線性表(可以看數(shù)據(jù)結(jié)構(gòu)——線性表)崇败。也就是說,棧也有兩種存儲結(jié)構(gòu),一種順序表結(jié)構(gòu)(簡稱為順序棧)后室,一種鏈表結(jié)構(gòu)(簡稱為鏈表棧)缩膝。
(1)順序棧
棧的順序存儲結(jié)構(gòu),利用一組連續(xù)的地址依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素岸霹,同時設(shè)指針top指向棧頂元素的當前位置疾层。通常用一維數(shù)組來實現(xiàn)棧,當top = 0時為空棧贡避,當數(shù)據(jù)元素不斷進棧痛黎,棧頂指針top不斷加一,top達到數(shù)組最大下標時為棧滿刮吧。
(2)鏈表棧
使用鏈表存儲結(jié)構(gòu)實現(xiàn)的棧稱為鏈表棧舅逸,此時的棧頂指針top用于存放首節(jié)點的指針。棧頂指針top->next = NULL時為空棧皇筛。
4.棧的應(yīng)用
上面的例子介紹棧的操作,這么麻煩坠七,棧具體的使用場景是上面呢水醋?