一 建棧操作
#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...