【C++】基本数据结构——栈

栈的定义

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶(top),相对地,把另一端称为栈底(bottom)。向一个栈插入新元素又称作进栈入栈压栈(push),它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

  • 信息学中的栈一般是数组来实现,stl库中内置有栈这个容器。不过信息学竞赛中一般都是自己实现。
    栈的模型

基本算法

1、进栈(push)

①若top≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
②top++(栈指针加1,指向进栈地址);
③s[top]=x,结束(X为新进栈的元素);

代码:

void push(int x)//进栈
{
   
	s[++top]=x;
}

当然,像上文所说,你还可以这么写:

stack<int> s;
s.push(x);

2、出栈(pop)

①若top≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②x=s[top],(退栈后的元素赋给x):
③top- -,结束(栈指针减1,指向栈顶)。

代码:

void pop()//出栈
{
   
	return s[top--];
}

同样:

stack<int> s;
s.pop(x);

例题

只讲一道

计算表达式的值

题目描述

小明在你的帮助下,破译了Ferrari设的密码门,正要往前走,突然又出现了一个密码门。
门上有一个算式,其中只有“(”、“)”、“0-9”、“+”、“-”、“*”、“/”、“^”,求出的值就是密码。
小明的数学学得不好,还需你帮他的忙。(“/”用整数除法)

输入格式

只有一行是一个算式(算式长度<=30)。

输出格式

对于每组数据,输出算式的值(所有数据在2^31-1内)。

样例输入

1+(3+2)*(7^2+6*9)/(2)

样例输入

258

代码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值