定義:
typedef int selemtype;
typedef struct
sqstack;
而此處的定義是:top指向棧頂元素在陣列中的位置。top必然小於 stacksize;空棧時 top = -1
而且此處的top 不是指標,是陣列的序號。
進棧操作:
/* 插入元素e為新的棧頂元素 */
status push(sqstack *s, selemtype e)
出棧操作:
status pop(sqstack *s, selemtype *e)
雙棧共享空間的定義:
typedef struct
sqdoublestack;
雙棧的壓棧操作:
/* 插入元素e 為新的棧頂元素 */
status push(sqdoublestack *s, selemtype e, int stacknumber)
雙棧的出棧操作:
/* 若棧不空,則刪除s的棧頂元素,用e返回其值,並返回ok;否則返回error */
status pop(sqdoublestack *s, selemtype *e, int stacknumber)
else if (stacknumber == 2)
return ok;
}
棧(stack)是限定僅在表的一頭進行插入和刪除的線性表。
棧頂(top, 順序結構中 top 指向棧頂元素,鏈式結構中也指向鍊錶的頭部,即棧頂元素)
佇列(queue)是只允許在一端(隊尾 rear)進行插入操作,而在另一端(隊頭 front)進行刪除操作的線性表。
sqqueue中,front 是第乙個元素的序號,rear 是最後乙個元素的後乙個位置的序號。(含迴圈佇列的假溢位現象)
linkqueue中,front 指向頭結點(即第乙個元素之前的乙個節點),rear 指向最後乙個節點。
當棧存在乙個元素時,top 等於 0;空棧的判定條件為 top 等於 -1。
順序儲存的雙棧共享
一 建棧操作 define smax 10 typedef struct stack stack,pstack data棧儲存資料域,smax是共享棧的大小,top 0 是底棧棧頂指示表示,top 1 是頂棧棧頂指示標誌。就當做指標說好理解表達 二 初始化棧。三 進棧操作 bool stackpus...
棧 棧 鏈式棧,順序棧,共享棧
棧也是一種線性表結構,只不過棧的操作是受限的,它的特點就是在棧頂方向新增新的元素,且刪除元素也只能從棧頂方向刪除。因此棧是一種lifo 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...
資料結構 棧 順序棧 雙棧共享同一棧空間 鏈式棧
1 棧,先進後出 後進先出特性 2 3 4 順序棧的靜態儲存結構需要預先定義或申請棧的儲存空間,棧空間容量有限,一旦裝滿不能擴充,元素進棧會發生上溢現象 5 define maxsize 100 棧元素資料型別 6 typedef int selemtype 7 typedef struct 8 s...