栈顶指针是始终指向栈的最上方的一个标记。
- 当使用数组实现栈时,栈顶指针是一个int型变量(数组下标从0开始),通常记为TOP。
- 当使用链表实现栈时,则是一个int型的指针。
- 栈中没有元素(即栈空)时,令TOP为-1.
栈的常用操作
- 清空(clear)
- 获取栈内元素个数(size)
- 判空(empty)
- 进栈(push)
- 出栈(pop)
- 取栈顶元素(top)
清空(clear)
栈的清空操作将栈顶指针 top置为-1,表示栈中没有元素
void clear(){
TOP = -1;
}
获取栈内元素个数(size)
栈顶指针TOP始终指向栈顶元素,而数组下标从0开始,因此栈内元素的数为TOP
int size(){
return TOP +1;
}
判空(empty)
当TOP==-1时为栈空,返回true,否则,返回false。
bool empty(){
if(TOP==-1) return true;
else return false;
}
进栈(push)
push(x)操作将元素x置于栈顶,由于栈顶指针 TOP 指向栈顶元素,因此需要先把 TOP加1,然后再把x存入 TOP 指向的位置。
void push(int x){
st[++TOP]=x;
}
取栈顶元素(top)
由于栈顶指针 TOP 始终指向栈顶元素,因此可以st[TOP]即为栈顶元素。
int top(){
return st[TOP];
}
注:使用pop()函数和top()函数之前先使用 empty()函数判断是否为空。
如果需要实现栈的清空,可以用一个while循环反复pop出元素直到栈空:
while(!st.empty()){
st.pop();
}