19. 请在下列算法的横线上填入适当的语句。【清华大学 1994 五 (15分)】
function inclusion(ha,hb:linklisttp):boolean;
{以ha和hb为头指针的单链表分别表示有序表a和b,本算法判别表a是否包含在表b内,若是,则返回“true”,否则返回“false”}
begin
pa:=ha^.next; pb:=hb^.next; (1) ;
while(2) do
if pa^.data=pb^.data then(3) else(4) ;
(5)
end;
29.已知一双向循还链表,从第二个结点至表尾递增有序,(设a1
30. 已知长度为n的线性表a采用顺序存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。(o(1)表示算法的辅助空间为常量)。
【北京航空航天大学 2000 五(10分)】
31.设民航公司有一个自动预订飞机票的系统,该系统中有一张用双重链表示的乘客表,表中结点按乘客姓氏的字母序相链。例如,下面是张某个时刻的乘客表。试为该系统写出一个当任一乘客要订票时修改乘客表的算法。
序号 data llink rlink
1 liu 6 5
2 chan 4 9
3 wang 5 7
4 bao 0 2
5 mai 1 3
6 dong 8 1
7 xi 3 0
8 deng 9 6
9 cuang 2 8
【北方交通大学 2000 六(17分)】
32.设有一头指针为l的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针),data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次locate(l,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的locate(l,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针型。【清华大学 1997 二 (10分)】
33.给定(已生成)一个带表头结点的单链表,设head为头指针,结点的结构为(data,next),data为整型元素,next为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求;不允许使用数组作辅助空间)【华中理工大学 2000 八、2 (13分)】
34.已知三个带头结点的线性链表a、b和c中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对a表进行如下操作:使操作后的链表a中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为o(m+n+p),其中m、n和p分别为三个表的长度。【清华大学 1995 一 (15分)】
责任编辑:小草