题一
解题思路:先画出整体的活动树
(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
标签:存储,执行,第九章,常考,quicksort,解题,main,本题 From: https://www.cnblogs.com/rrrover/p/16923338.html