1.棧
即棧是一種先進後出(FILO)的數據結構。如下圖例子所示:
const int MAXN = 100005;
int value[MAXN]; //棧
int cnt = -1; //棧頂指針
//入棧
void push(int x) {
value[++cnt] = x;
}
//出棧
void pop(){
cnt--;
}
//取棧頂
int top() {
return value[cnt];
}
//判定棧空true:空
bool empty() {
return cnt == -1 ? true : false;
}
2.隊列
即隊列是一種先進先出(FIFO)的數據結構。如下圖例子所示(注意head表示指向隊頭指針,tail表示指向隊尾指針,初始化與下述代碼不同):
const int MAXN = 100005;
int value[MAXN];
int head, ed; //head指向隊列頭部的指針,ed指向隊列尾部的指針
//初始化,隊列爲空
void init() {
head = 0;
ed = -1;
}
//“push x” – 向隊尾插入一個數x;
void push(int x) {
value[++ed] = x;
}
//“pop” – 從隊頭彈出一個數;
void pop() {
head++;
}
// “empty” – 判斷隊列是否爲空;
bool empty() {
return !(head <= ed);
}
//“query” – 查詢隊頭元素。
int query() {
return value[head];
}