3 順序棧的操作(含雙棧共享)

2021-09-24 17:23:40 字數 1128 閱讀 6899

定義:

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...