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


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

(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
 
注意:控制链指向函数,访问链指向数据
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号