第九章运行存储分配常考大题总结(二)控制链和访问链

题一

 

解题思路:先画出整体的活动树

 

(1)题干指出当前执行过程为quicksort(2,3),意为q(5,9)一侧不需要考虑,因为q(1,3)先执行完才能执行q(5,9),本题轮不到q(5,9)

main()->r()      

main()->q(1,9)      r()执行完退出栈,执行q(1,9)

main()->q(1,9)->p(1,9)

main()->q(1,9)->q(1,3)->q(1,0)   p(1,9)执行完退出栈,执行q(1,0)

main()->q(1,9)->q(1,3)->q(2,3)   执行q(1,0)时,判断条件不通过,所以q(1,0)直接返回了(执行完了),故退出栈

main()->q(1,9)->q(1,3)->q(2,3) ->p(2,3)

main()->q(1,9)-->q(1,3)>q(2,3) 

main()->q(1,9)->q(1,3)->q(2,3) ->q(2,1)

main()->q(1,9)->q(1,3)->q(2,3) ->q(3,3)

main()->q(1,9)->q(1,3)->q(2,3) 

所以最终结果为:

 

 (2)经前面的分析,只要将q(5,9)子树删了就行

 

 题二

 

 

解题思路:

 

(1)过程的嵌套深度比较好理解,最外面的为1,每嵌套一层+1

 

本题sort()在最外层,readarray(),exchange(),quicksort()并列在第二层,partition()在第三层

 

 

 

(2)r(),p(1,9)和其子树e已经完成执行,故退出栈

 

所以栈里还有:

 

 

 

故答案为:

 

 

 

 需要注意的是,访问链指向非局部数据的开始部分

题三

 

 

解题思路:这个和上面一样,比较简单了

 

(1)p->q->r

 

(2)p->q->r->p->q->r

 

 

 注意:控制链指向函数,访问链指向数据

posted @ 2022-11-24 21:31  Rrrrrrover丶  阅读(120)  评论(0)    收藏  举报