全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总
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