算法笔记-栈概念


栈是一种后进先出的数据结构。
可以理解成每次把一本书放在箱子的最上面,也可以把箱子最上方的书拿出

栈顶指针
栈顶指针是始终指向栈的最上方元素
当使用数组实现时,栈顶指针是一个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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值