1. 栈的应用
栈是一种后进先出的数据结构。
(1)常用操作
- empty():堆栈为空返回真。
- pop():移除栈顶元素。
- top():返回栈顶元素。
- push():在栈顶增加元素。
- size():返回栈中元素数目。
#include <stack>
stack<int> st;
1.1 使用数组实现栈
变量top表示栈顶元素的下标,当top=-1时栈为空。
(1)clear
清空栈内所有的元素。
void clear() {
top =-1;
}
注意: STL中没有clear()函数,可以通过一个循环while反复pop出元素直到栈内清空。
while(!st.empty())
st.pop()
(2)size
返回栈内元素个数。因为栈元素是从数组下标0开始的,因此元素个数为top+1
int size(){
return top+1;
}
(3)empty
判断栈内是否为空。
bool empty(){
if(top ==-1) return true;
else return false;
}
(4)pop
将栈顶元素出栈。top表示栈顶下标,直接将top-1即可。
void pop(){
top--;
}
(5)top
返回栈顶元素值。
int top(){
return st[top];
}
(6)push
将元素x置于栈顶。
void push(int x){
st[++top] = x;
}
注意事项:
- STL不提供clear()清空堆栈函数。
- 在使用Pop()和Top()函数之前必须先使用empty()函数判断栈是否为空。
2. 队列的应用
队列是一种先进先出的数据结构。
(1)常用操作
- empty():队列为空返回真。
- pop():移除队首元素。
- front():返回队首元素。
- back():返回队尾元素。
- push():在队尾增加元素。
- size():返回队列元素数目。
#include <queue>
queue<int> q;
2.1 使用数组实现队列
一般来说,需要一个队首指针front来指向队首元素的前一个位置,和一个队尾指针rear指向队尾元素。队列的初始状态为front=-1, rear =-1。
(1)clear
将front和rear重置为初始状态。
void clear(){
front =rear =-1;
}
(2)size
返回队列元素个数。
int size(){
return rear -front;
}
(3)empty
当rear=front时,队列为空。
bool empty(){
if(front ==rear) return true;
else return false;
}
(4)pop
弹出队首第一个元素。
void pop(){
front++;
}
(5)front
返回队首第一个元素
int front(){
return q[front+1];
}
(6)push
把元素插入队列末尾
void push(int x){
q[++rear] =x;
}
(7)back
返回队尾第一个元素
int back(){
return q[rear];
}
注意事项:
- STL不提供clear()清空队列函数。
- 在使用Pop()和Top()函数之前必须先使用empty()函数判断栈是否为空。