- a.写出自调整( self-adjusting)表的数组实现。自调整表如同一个规则的表,但是所有的插入都在表头进行,当一个元素被Find 访问时,它就被移到表头而并不改变其余的项的相对顺序。
- b.写出自调整表的链表实现。
假设我们有一个基于数组的表 A[0..N - 1],并且我们想要删除所有相同的元素。LastPosition 初始值为 N - 1,但该值随着相同元素被删除而变得越来越小。考虑图3-61中的伪码程序段。过程Delete 删除位置j上的元素并使表破坏。
图3-61 从表中删除重元素的例程
/*1*/for (i = 0; i < LastPosition; i++) {
/*2*/ j = i + 1;
/*3*/ while (j < LastPosition)
/*4*/ if (A[i] == A[j])
/*5*/ Delete(j);
else
/*6*/ j++;
- a.解释该过程是如何进行工作的。
- b.利用一般的表操作重写这个过程。(用数组和链表分别实现)
- c.如用标准的数组实现,则这个过程的运行时间是多少?