中易网

数据结构题:设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的出栈序列是b、d、c、f、e、a

答案:2  悬赏:0  
解决时间 2021-01-24 07:33
数据结构题:设栈S的初始状态为空,若元素a、b、c、d、e、f依次进栈,得到的出栈序列是b、d、c、f、e、a
最佳答案
1楼答的挺对的,栈S的容量是3,既然知道了栈名S,要用到C/C++最好能用栈S的函数push、pop
S.push (a)
S.push (b)
S.pop()
S.push (c)
S.push (d)
S.pop()
S.pop()
S.push (e)
S.psuh (f)
S.pop()
S.pop()
S.pop()
你说容量是怎么计算出来的,其实你应该知道栈是先进后出的吧,每次push也就是压入只能一个元素,每次pop也就是弹出也是一个元素。栈就像下面画的结构似的,其实容量就是这样的“格子”的数量。
     b是第一个出栈,那怎样才能让b第一个出栈,而且压入顺序又是a,b,c,d,e,f呢?首先把a压入栈中,然后在将b压入栈中,这时弹出b,那b就是第一个出栈的啦,这时栈中还有元素a,然后分析第二个出栈的,第二个出栈是d,那还是得先压入c,然后再压入d(这时候栈里有几个元素呢?是a,c,d对吧)然后d出栈,这时栈中还有a,c,然后分析第三个出栈的是c,然后弹出c(即c出栈),然后分析第四个出栈的是f,和上面一样的分析啊,要想f第四个出栈,先压入e,再压入f,(这时栈中有3个元素,a,e,f)然后弹出f,(栈中还有两个元素a,e),弹出e,弹出a。记住弹出只能弹出栈顶元素。什么时候压入,什么时候弹出都是自己决定的啊,但是根据上面的分析,要想入栈顺序和出栈顺序都正确,就必须这样操作啊,呵呵,所以栈S的容量,就是你在这样的分析的过程中栈S所含元素最多是多少啊?所以就是3
全部回答
则栈S的容量至少是3。
操作依次为:
push a
push b
pop
push c
push d
pop
pop
push e
psuh f
pop
pop
pop追问这个操作怎么算出来的,我怎么知道什么时候该压栈,什么时候该出栈。追答题目说:得到的出栈序列是 b、d、c、f、e、a。
第一个出栈的是 b,所以,push b 后就应该 pop;
然后出栈的是 d、c, 所以,push c、push d 后就应该 pop、pop;
依此类推。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
过生日KTV房间怎么布置
三星B7620U手机上网怎么设置
甘肃天气预报100天
爆爆口令在哪里啊?
电视机如何关才能延长寿命
单反相机如何设置参数?
浚县小河镇牛寨中心校地址在什么地方,我要处
西青大寺附近交通违章在哪交
什么是海马汽车公司?
2018年就没有职校了吗
农林经济管理专业就业方向?
柏瑞尼整体橱柜衣柜地址在什么地方,我要处理
顶棚装修材料都有那些?
艾灸如何治脾之湿热
新豪纯k地址在什么地方,想过去办事
推荐资讯
甲醛检测仪怎样用?
天龙纯功放好吗?
开自酿酒店需要哪些证件
小时候看过的人猿泰山系列的电影,不是动画片
有一部电影里有一个叫高大威的个子不高是什么
待我功名有落时。有没有相同的诗
广东吴川叠嫁妆被怎叠?就岀嫁那天的(被)齐去
韩国旅游买什么最值,网上有没有介绍的
旅游局的电话号码是多少呢?
深圳去眼袋多少费用
怎么写,大写一十二万六千元怎么写
骂人里面,dhb什么意思?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?