20 受限線性表 棧

2021-08-20 16:10:49 字數 1364 閱讀 1682

棧也是一種線性表,棧中的元素具有線性關係,只不過它是一種特殊的線性表而已,也就是說,棧是一種只能在棧頂的位置進行插入和刪除操作的線性表。

圖1-棧的基本操作

棧的插入操作,叫做進棧,也稱為壓棧。類似子彈入彈夾,棧的刪除操作,叫做出棧,也有的叫做弾棧,退棧。如同彈夾中的子彈出夾。

對於棧中的a,b,c,d四個元素來說,a是最先進棧的元素,然後b,c,d依次進棧,由於d是最後進棧的,所以d元素是在棧頂,而a元素是在棧底。當出棧時,d元素在棧頂,所以d元素最先出棧,然後c,b,a依次出棧,而a元素是最後出棧的。因此我們可以發現:棧中的元素總是先進後出的。

順序棧的抽象資料型別定義如下

adt stack

//elemtype為型別識別符號

資料關係:

r =

資料操作:

initstack(&s):初始化棧。構造乙個空棧s。

destroystack(&s):銷毀棧。釋放棧s占用的儲存空間。

stackempty(s):判斷棧是否為空:若棧s為空,則返回真;否則返回假。

push(&s,e):進棧。將元素e插入到棧s中作為棧頂元素。

pop(&s,&e):出棧。從棧s中退出棧頂元素,並將其值賦給e。

gettop(s,&e):取棧頂元素。返回當前的棧頂元素,並將其值賦給e。

}

棧的順序儲存結構:

//定義棧的順序儲存結構

typedef

struct sqstack

sqstack;

因為棧是一種特殊的線性表,所以棧的順序儲存可以通過順序線性表來實現。

圖2-順序棧的儲存實現

順序棧4要素:

圖3-順序棧4要素

假設棧的大小以maxsize=5為例

1 . 棧滿條件:當top的下標等於maxsize - 1時,表示棧已經存滿元素了。

2 . 元素a進棧操作:先將top下標+1,將元素a放在top下標的位置

3 . 元素a出棧操作:先從top下標的位置將元素a出棧,然後top下標-1

4 . 棧空的條件:當top = -1,因為top = 0表示已經是指向棧中的最後乙個元素,所以當top = -1則表示棧為空,沒有元素了。

受限的線性表 棧 順序棧

include define maxsize 50 typedef int datatype using namespace std 棧的資料結構 順序棧 資料運算 1.初始化乙個空棧 初始指標 1 2.資料元素入棧 如果棧沒滿,資料元素入棧 3.資料元素出棧 如果棧沒空,資料元素出棧 4.得到棧頂...

c語言 棧(受限制線性表)

它的特殊之處在於限制了這個線性表的插入和刪除的位置,它始終只在棧頂進行。這也 就使得棧底是固定的,最先進棧的只能在棧底。棧的插入操作,叫做進棧,也成壓棧。類似子彈入彈夾 棧的刪除操作,叫做出棧,也有的叫做彈棧,退棧。如同彈夾中的子彈出夾 用陣列實現棧 pragma once include incl...

線性表 棧 佇列

輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...