数据结构1800题(答案全)(11)
WHILE s <> NIL DO
BEGIN IF s^.data < q^.data THEN BEGIN (1)__; (2)___ END ;
r:= s ; (3)___
END;
write(q^.data : 5) ;
IF p=NIL THEN (4)___ ELSE (5)____ ;
dispose (q) ;
END;
writeln
END;【复旦大学 1996 七(20分) 1995 一(12分)与本题相似】 28.下面函数的功能是在一个按访问频度不增有序的,带头结点的双向链环上检索关键值为x的结点,对该结点访问频度计数,并维护该链环有序。若未找到,则插入该结点。所有结点的频度域初值在建表时都为零。请将程序中四处空缺补写完整。
TYPE
link=^node
node=RECORD
key:char; freq:integer; pre,next:link;
END;
VAR l:link;
FUNCTION loc(l:link;x:char):link;
VAR p,q:link;
BEGIN
p:=l^.next; (1)_;
WHILE p^.key<>x DO p:=p^.next;
IF p=l THEN [ new(q); q^.key:=x; q^.freq:=0 ]
ELSE {找到}
[ p^.freq:=p^.freq+1; q:=p; (2)______;
WHILE q^.freq>p^.pre^.freq DO p:=p^.pre;
IF p<>q THEN [ (3)______ ] ];
IF (4)_ THEN [q^.next:=p, q^.pre;=p^.pre; p^.pre^.next:=q; p^.pre:=q]
return(q);
END;【北京工业大学 1999 五 (12分)】
29.循环链表a和b的结点值为字母,其中a表非递减有序,下面的程序欲构造一个递增有序的循环链表c,其中结点的值为同时在a,b两链表中出现的字母,且c中字母不重复,请补上程序中空缺的部分,并估计算法的时间复杂度。(设a,b的结点数分别为m,n)
TYPE
link=^node;
node=RECORD
key:char; next:link
END;
PROC jj(a,b:link; VAR c:link);
VAR p,q,r,s:link;
BEGIN
new(c);c^.next:=c; q:=a; p:=a^.next;
WHILE p<>a DO
[(1)___;
WHILE p^.key=p^.next^.key DO [q:=p; p=p^.next];{跳过相同字母}
r:=b^.next ; (2)_____;
WHILE r^.key <>p^.key DO r:=r^.next;
IF r<>b THEN
[ s:=p; q^.next:=p^.next; (3) ;
s^.next:=c^.next; c^.next:=s; c:=s ]
ELSE [ q:=p; p:=p^.next ]
]; c:=c^.next;
END;
算法时间复杂度为O(4)___ 【北京工业大学 2000 四 (15分)】
30. 以下程序的功能是实现带附加头结点的单链表数据结点逆序连接,请填空完善之。
void reverse(pointer h)
/* h为附加头结点指针;类型pointer同算法设计第3题*/
{ pointer p,q;
p=h->next; h->next=NULL;
while((1)________)
{q=p; p=p->next; q->next=h->next; h->next=(2)________; }
}【西南交通大学 2000 一、9】
31. 下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。
void reverse(linklist &L){
p=null;q=L;
while(q!=null)
{ (1) ; q->next=p;p=q;(2)___ ; }
(3)_____;
}【北京理工大学 2001 九、1 (6分)】
32.下面程序段是逆转单向循环链表的方法,p0 是原链表头指针,逆转后链表头指针仍为p0。
(可以根据需要增加标识符)
p:= p0; q0:=NIL;
WHILE (1)________ DO
BEGIN (2)________; (3)________;(4)______;(5)________ END;
p^.next:= q0; p0 ^.next:=p; p0:=p;【中国人民大学 2000 二、1(4分)】
33.一个无头结点的线性链表(不循环)有两个域。数据域data,指针域 next,链首head,下面算法用read(num)读入数据,当num小于0时,输入结束。建立一个数据以递增序组成的链表。
PROC insert( head, x);
{在链首为head的表中按递增序插入x}
new(r);r^.data:=x;
IF head=NIL
THEN[ head:=(1) _____; r^.next:= (2)________ ]
ELSE IF (3)___ THEN [r^ .next:=head; head:=r]
ELSE [p:=head;
WHILE (4)___ AND (p^.next≠NIL ) DO[q:=p; (5)___ ];
IF (6)___ THEN [ q^ .next:=(7)___; r^.next:= (8)____; ]
ELSE [p^.next:=(9)____; r^.next:= (10)___; ]
]
ENDP;
PROC creat(head);
head:= (11)______; read(num);
WHILE num>0 DO
[ insert(head,num); read(num) ]
ENDP;【南京理工大学 1999 三、4(11分)】
34. 一元稀疏多项式以循环单链表按降幂排列,结点有三个域,系数域coef ,指数域exp和指针域 next;现对链表求一阶导数 ,链表的头指针为ha,头结点的exp域为 –1。
derivative(ha)
{ q=ha ; pa=ha->next;
while( (1)_______)
{ if ( (2)____) { ( (3)__); free(pa); pa= ( (4) _); }
else{ pa->coef ( (5) ___); pa->exp( (6)___); q=( (7) __);}
pa=( (8)________);
}
} 【南京理工大学 2000 三、3(10分)】
35.下面是删除单链表L中最大元素所在结点的类PASCAL语言算法,请在横线填上内容,完成其功能。
TYPE pointer =↑node;
node=RECORD
data:integer; next: pointer
END;
…… 此处隐藏:1012字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




