栈定义及特性

1.定义及特性
栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。

假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。
在这里插入图片描述

栈顶 top
栈底 base
栈不存在的条件 base==NULL;
栈为空的条件:base=top;
栈满的条件:top-base=stacksize;

在这里插入图片描述在这里插入图片描述

void test(int &sum)
{
int x;
scanf("%d",&x);
if(x==0)sun=0;
else                  //断点地址入栈
   {tese(sum);sum+=x;}
   printf("%d",sum);   
}
***

## 一个栈的输入序列为1,2,3,若在入栈的过程中允许出栈,则可能是什么?
答:        可以通过穷举所有可能性来求解:
        ① 1入1出, 2入2出,3入3出, 即123;
        ② 1入1出, 2、3入,3、2出, 即132;
        ③ 1、2入,2出, 3入3出,    即231;
        ④ 1、2入,2、1出,3入3出,  即213;
        ⑤ 1、2、3入,3、2、1出,    即321;
      合计有5种可能性
***

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值