算法题分析 出入栈问题

你。 提交于 2020-02-25 22:36:44

1. 如果一堆栈的输入序列是aAbBc,输出为 abcBA,那么该堆栈所进行的操作序列是什么? 设P代表入栈,O代表出栈。

首先第一个输入是a ,第一个输出也是a,我们把a进栈,然后再弹出去就可以了:

操作为 PO。

然后,第二个输入是A,进栈,但是不能这个时候弹出去,因为第二个输出应该是b,正好第三个输入为b,

操作为PPO。

然后第四个输入为B,第三个弹出为c,栈里没有c,故继续读取,读到c,弹出。

操作为PPO 现在栈里还有两个数:a , b

所以按顺序出栈即可:OO

最后连起来,即 POPPOPPOOO

 

2. 若用单向链表实现一个堆栈,当前链表状态为:1->2->3。当对该堆栈执行pop()、push(4)操作后,链表状态变成怎样?

首先注意单向链表只能用栈头结点代表栈顶,因为单向链表只能指向下一个元素,而不能指向前面的元素,故如果栈顶是链表尾,则弹栈以后无法得到新的栈顶。

所以1是栈顶。弹栈,4进栈以后,答案是 4->2->3

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!