順序儲存的雙棧共享

2021-07-26 08:29:30 字數 1109 閱讀 5353

一 建棧操作

#define smax 10

typedef struct stack

stack,*pstack;

data棧儲存資料域,smax是共享棧的大小,top[0]是底棧棧頂指示表示,top[1]是頂棧棧頂指示標誌。(就當做指標說好理解表達)

二 初始化棧。

三 進棧操作

bool stackpush(pstack stack, int i,int x)

return true;

}首先判棧是否滿棧 滿棧條件就是  底棧棧頂指標 是否與 頂棧棧頂指標相鄰

四 出棧操作  先判斷是哪個棧要出 是底棧還是頂棧  如果先判斷棧是否是空的話 麻煩一點 考慮底棧跟頂棧其中乙個不空,另外乙個空的情況

bool stackpop(pstack stack, int i, int &x)

return true;

}五 取棧頂操作 同出棧操作相似 除去棧頂指標移動語句即可

bool stackpoptop(pstack stack, int i, int &x)

return true;

}整理**如下

#define smax 10

typedef struct stack

stack,*pstack;

void stackinit(pstack stack)//初始化棧

bool stackpush(pstack stack, int i,int x)

return true;

}bool stackpop(pstack stack, int i, int &x)

return true;

}bool stackpoptop(pstack stack, int i, int &x)

return true;

}

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

定義 typedef int selemtype typedef struct sqstack 而此處的定義是 top指向棧頂元素在陣列中的位置。top必然小於 stacksize 空棧時 top 1 而且此處的top 不是指標,是陣列的序號。進棧操作 插入元素e為新的棧頂元素 status pus...

順序儲存之兩棧共享空間原理

反覆看了幾遍 大話資料結構 第四章的4.5節,始終不太理解順序儲存的兩棧共享是如何實現的 一開始被圖4 5 1誤導了,以為是通過兩個陣列來實現 讀完參考鏈結的部落格後,恍然大悟。要點整理如下 在乙個陣列 長度為n 中有兩個棧 陣列的始端和尾端分別是兩個棧的棧底 對於棧底為陣列始端的棧1,插入元素時棧...

資料結構 棧 順序棧 雙棧共享同一棧空間 鏈式棧

1 棧,先進後出 後進先出特性 2 3 4 順序棧的靜態儲存結構需要預先定義或申請棧的儲存空間,棧空間容量有限,一旦裝滿不能擴充,元素進棧會發生上溢現象 5 define maxsize 100 棧元素資料型別 6 typedef int selemtype 7 typedef struct 8 s...