主题:请教“支持子程序调用的数据结构是什么”(09年全国二级原题)
09年上半年全国二级VB考试中选择题:
支持子程序调用的数据结构是什么?
A、栈 B、树 C、队列 D、二叉树
参考书上说答案为B、树。因为子程序调用是一种层次关系,子程序调用功能模块,调用功能模块的个数也不清楚,可以是一个,也可以是多个。而A、C答案中元素之间是一种前后件关系,没有层次之分,故不对;D答案只能有两个后件,故不对。
但是我从网上查到如下信息:一个子程序能够供给许多地方使用。这样就产生 了一个问题:如何记忆是从何妙调用的子程序,以便正确返回。在计算机中采用了一种叫做“堆栈”的技术。所谓堆栈就是在存储器中预留一块叫“栈区”的地方,专门用来保存临时的数据。当主程序调用子程序时,计算机执行到CALL指令就自动将下一条指令的地址“压栈”保存到栈区,当子程序结束时,计算机一旦判断到执行的是RET指令,就自动地把刚才保存到栈区的内容“弹出”,作为下一步指令执行的新地址。。。。。这样说来,答案应该是A、栈呀!
还请达人们解答!谢谢!
支持子程序调用的数据结构是什么?
A、栈 B、树 C、队列 D、二叉树
参考书上说答案为B、树。因为子程序调用是一种层次关系,子程序调用功能模块,调用功能模块的个数也不清楚,可以是一个,也可以是多个。而A、C答案中元素之间是一种前后件关系,没有层次之分,故不对;D答案只能有两个后件,故不对。
但是我从网上查到如下信息:一个子程序能够供给许多地方使用。这样就产生 了一个问题:如何记忆是从何妙调用的子程序,以便正确返回。在计算机中采用了一种叫做“堆栈”的技术。所谓堆栈就是在存储器中预留一块叫“栈区”的地方,专门用来保存临时的数据。当主程序调用子程序时,计算机执行到CALL指令就自动将下一条指令的地址“压栈”保存到栈区,当子程序结束时,计算机一旦判断到执行的是RET指令,就自动地把刚才保存到栈区的内容“弹出”,作为下一步指令执行的新地址。。。。。这样说来,答案应该是A、栈呀!
还请达人们解答!谢谢!