栈定义及特性
原创
©著作权归作者所有:来自51CTO博客作者靠谱的大钊的原创作品,请联系作者获取转载授权,否则将追究法律责任
栈
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种可能性
***