首页 > 试题广场 >

设L是一个长度为n的双向链表,存储长度为m的数组key,pr

[问答题]
设L是一个长度为n的双向链表,存储长度为m的数组key,prev和next中。假设这些数组由维护双链自由表F的两个过程ALLOCATE-OBJECT和FREE-OBJECT进行管理。又假设m个元素中,恰有n个元素在链表L上,m-n个在自由表上,给定链表L和自由表F,试写出一个过程COMPACTIFY-LIST(L,F),用来移动L中的元素使其占用数组中1,2,...,n的位置,调整自由表F以保持其正确性,并且占用数组中n+1,n+2,...,m的位置。要求所写的过程运行时间应为,且只使用固定量的额外存储空间。请证明所写的过程是正确的。
ALLOCATE-OBJECT()
if free==NIL
   error "out of space"
else x=free
       free=x.next
       return x
FREE-OBJECT(x)
x.next=free
free=x

这道题你会答吗?花几分钟告诉大家答案吧!