考虑以下陈述。
- S1:过程调用序列对应于激活树的先序遍历。
- S2:过程返回的序列对应于激活树的后序遍历。
以下哪个选项是正确的?
(A) S1 为真,S2 为假
(B) S1 为假,S2 为真
(C) S1 为真,S2 为真
(D) S1 为假,S2 为假答案: (C)
说明:运行时堆栈的使用是通过激活树和程序行为之间的几个有用关系来实现的:
- 过程调用序列对应于激活树的先序遍历。
- 返回序列对应于激活树的后序遍历。
- 从根到节点 N 的路径显示了在 N 执行时处于活动状态的激活。
- 过程调用和返回由控制堆栈(即运行时堆栈)管理。
在每个过程调用中,该过程的激活记录被压入堆栈。当调用返回时,该活动记录从堆栈中弹出。
这些激活被调用的顺序是它们沿着到 N 的路径出现的顺序,从根开始,它们将以相反的顺序返回。
这个问题的测验