栈
栈是一种后进先出的数据结构。
可以理解成每次把一本书放在箱子的最上面,也可以把箱子最上方的书拿出
栈顶指针
栈顶指针是始终指向栈的最上方元素
当使用数组实现时,栈顶指针是一个int型的变量,数组下标从0开始,通常记为TOP;
当使用链表实现栈时,是一个int*型的指针
栈空:栈中没有元素时令TOP为-1
常用操作
1.清空(clear)
将栈顶指针TOP置为-1,表示栈中没有元素
void clear(){
TOP == -1;
}
2.获取栈内元素个数(size)
由于栈顶指针TOP始终指向栈顶元素,而数组下标从0开始,因此栈内元素的数为TOP+1
int size(){
return TOP + 1;
}
3.判空(empty)
仅当TOP == -1时为栈空,返回true;否则,返回false
bool empty(){
if(TOP == -1) return true;
else return false;
}
4.进栈(push)
push(x)操作将元素x置于栈顶
由于栈顶指针TOP指向栈顶元素,因此需要先把TOP加1,然后再把x存入TOP指向的位置
void push(int x){
st[++TOP] = x;
}
5.出栈(pop)
pop()操作将栈顶元素出栈
可以直接将栈顶指针TOP减1来实现这个效果
void pop(){
TOP--;
}
6.取栈顶元素(top)
由于栈顶指针TOP始终指向栈顶元素
int top(){
return st[TOP];
}
注:
1.出栈操作和取栈顶元素操作在栈非空情形下才能使用,因此在使用pop()和top()前必须使用empty()判断栈是否为空
2.STL无直接实现栈的清空操作函数
用该写法代替
while(!st.empty()){
st.pop();
}