链表在存储器中紧凑地排列

10.3-4   我们常常希望一个双链表中的所有元素在存储器中能够紧凑地排列在一起,例如使用多重数组表示中的前m个下标位置(在一个分页的虚拟计算机环境中情况就是这样)。假设链表以外没有指向链表元素的指针,请说明应如何实现过程ALLOCATE-OBJECT和FREE-OBJECT,才能使这种表示比较紧凑。(提示:使用栈的数组实现。)

 

分析与解答:

     假设链表中已有y个元素,并且已经紧凑排列。令top = y +1,表示下一个将要分配的指针位置

     在分配空间时很简单:

           ALLOCATE-OBJECT分配时,只需要top++,同时在双链表L的头部增加一个元素。

     在释放空间时稍微复杂:

          FREE-OBJECT释放时,若x和y相同,则只需要从双链表L中删除元素x,同时top--;若x<y,则需要将x删除,同时将元素y调整到x的位置,然后top--

 

整个过程如下:

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值