數據結構之棧與隊列(數組模擬)

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];
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章