考研“数据结构”复习书传说中的1800题(2)

2019-03-28 12:41

20. 分析下面程序段中循环语句的执行次数。

i:=0;s:=0;n:=100; REPEAT i:=i+1; s:=s+10*i;

UNTIL NOT((i

【北京邮电大学 1998 四、1(5分)】

21.下列算法对一n位二进制数加1,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。

TYPE num=ARRAY [1..n] of [0..1]; PROCEDURE Inc (VAR a:num); VAR i:integer; BEGIN i:=n;

WHILE A[i]=1 DO

BEGIN A[i]:=0; i:=i-1;END; END;

A[i]:=1; END Inc;

【东南大学1998 三 (8分) 1994 二(15分)】

22. 阅读下列算法,指出算法A的功能和时间复杂性

PROCEDURE A (h,g:pointer);

(h,g分别为单循环链表(single linked circular list)中两个结点指针) PROCEDURE B(s,q:pointer); VAR p:pointer; BEGIN p:=s;

WHILE p^.next<>q DO p:=p^.next; p^.next:=s; END;(of B) BEGIN

B(h,g); B(g,h); END;(of A)

【东南大学 1999 二(10分)】

23. 调用下列C函数f(n)或PASACAL函数f(n) 回答下列问题 :

(1) 试指出f(n)值的大小,并写出f(n) 值的推导过程;

(2) 假定n= 5,试指出f(5)值的大小和执行f(5)时的输出结果 。 C函数: int f(int n)

{ int i,j,k,sum= 0; for(i=l; ii-1; j--) for(k=1;k

sum++;

printf(\;

}

return (sum);

} 【华中理工大学 2000 六(10分)】

24.设n是偶数,试计算运行下列程序段后m的值并给出该程序段的时间复杂度。

m:=0;

FOR i:=1 TO n DO

FOR j:=2*i TO n DO m:=m+1;

【南京邮电大学 2000 一、1】 25.有下列运行时间函数:

232

(1)T1 (n)=1000; (2)T2(n)=n+1000n; (3)T3(n)=3n+100n+n+1; 分别写出相应的大O表示的运算时间。

【吉林工业大学 1999 二(12分)】 26. 试给出下面两个算法的运算时间。

(1) for i←1 to n do x ← x+1 END

(2) for i← 1 to n do for j←1 to n do x← x+1 end end

【中科院自动化研究所 1995 二、2 (6分)】 27. 斐波那契数列Fn定义如下

F0=0, Fl=1, Fn=Fn-1+Fn-2, n=2,3... 请就此斐波那契数列,回答下列问题。

(1) (7分) 在递归计算Fn的时候,需要对较小的Fn-1,Fn-2,?, Fl, F0精确计算多少次? (2) (5分) 如果用大O表示法,试给出递归计算Fn时递归函数的时间复杂度录多少?

【清华大学 2000 二(12分)】

28.将下列函数,按它们在n→∝时的无穷大阶数,从小到大排序。

n, n-n+7n, nlogn, 2, n, logn, n+logn, (3/2),

【中科院计算所 1995 】

35n/231/2n

,n!, n+logn

2

第2章 线性表

一 选择题

1.下述哪一条是顺序存储结构的优点?( )【北方交通大学 2001 一、4(2分)】 A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示

2.下面关于线性表的叙述中,错误的是哪一个?( )【北方交通大学 2001 一、14(2分)】

A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 3.线性表是具有n个( )的有限序列(n>0)。 【清华大学 1998 一、4(2分)】 A.表元素 B.字符 C.数据元素 D.数据项 E.信息项 4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。【哈尔滨工业大学 2001 二、1(2分)】

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。【南开大学 2000 一、3】

A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表

6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表

【合肥工业大学 2000 一、1(2分)】

7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( )存储方式最节省运算时间。【北京理工大学 2000 一、1(2分)】

A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表 8. 静态链表中指针表示的是( ). 【北京理工大学 2001 六、2(2分)】 A. 内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址 9. 链表不具有的特点是( ) 【福州大学 1998 一、8 (2分)】 A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 10. 下面的叙述不正确的是( )【南京理工大学 1996 一、10(2分)】 A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关

C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比 D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关

11. 线性表的表元存储方式有((1))和链接两种。试指出下列各表中使用的是何种存储方式:表1是((2))存储方式;表2是((3))存储方式;表3是((4))存储方式;表

4是((5))存储方式。表左的s指向起始表元。

表1 表元编号 货号 数量 表元间联系 s→ 1 618 40 2 2 3 4 5 6 表元编号 1 2 3 4

205 103 501 781 910 货号 618 205 103 501 2 15 20 17 24 数量 40 2 15 20 3 4 5 6 0 表元间联系 5 1 4 2

5 6 781 910 17 24 6 3

表2

s→

表元编号 1 2 3 4 5 6 表元编号 1 2 3 4 5 6 货号 618 205 103 501 781 910 货号 618 205 103 501 781 910 数量 40 2 15 20 17 24 数量 40 2 15 20 17 24 表元间联系 5 1 4 0 6 3 表元间联系 1 1 4 0 6 3 2 0 6 3 1 5 5 2

s→ 表4

s→

表3

供选择的答案:

A.连续 B.单向链接 C.双向链接 D.不连接 E.循环链接 F.树状 G.网状 H.随机 I.顺序 J.顺序循环

【上海海运学院 1995 二、1(5分)】

12.(1) 静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元

素的时间与i无关。

(2) 静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。 (3) 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。

以上错误的是( )【南京理工大学 2000 一、3(1.5分)】 A.(1),(2) B.(1) C.(1),(2),(3) D.(2) 13. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( )(1<=i<=n+1)。【北京航空航天大学 1999 一、1(2分)】

2

A. O(0) B. O(1) C. O(n) D. O(n)

14. 对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。

A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)

【青岛大学 2000 五、1(2分)】

15.线性表( a1,a2,?,an)以链接方式存储时,访问第i位置元素的时间复杂性为( )

A.O(i) B.O(1) C.O(n) D.O(i-1)【中山大学 1999 一、2】

16.非空的循环单链表head的尾结点p↑满足( )。【武汉大学 2000 二、10】

A.p↑.link=head B.p↑.link=NIL C.p=NIL D.p= head 17.循环链表H的尾结点P的特点是( )。【中山大学 1998 二、2(2分)】 A.P^.NEXT:=H B.P^.NEXT:= H^.NEXT C.P:=H D.P:=H^.NEXT

18.在一个以 h 为头的单循环链中,p 指针指向链尾的条件是()【南京理工大学1998 一、15(2分)】

A. p^.next=h B. p^.next=NIL C. p^.next.^next=h D. p^.data=-1 19.完成在双循环链表结点p之后插入s的操作是( );【北方交通大学 1999 一、4(3分)】

A. p^.next:=s ; s^.priou:=p; p^.next^.priou:=s ; s^.next:=p^.next; B. p^.next^.priou:=s; p^.next:=s; s^.priou:=p; s^.next:=p^.next; C. s^.priou:=p; s^.next:=p^.next; p^.next:=s; p^.next^.priou:=s ; D. s^.priou:=p; s^.next:=p^.next; p^.next^.priou:=s ; p^.next:=s; 20.在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点,其修改指针的操作是( )。【北京邮电大学 1998 二、2(2分)】

注:双向链表的结点结构为(llink,data,rlink)。 供选择的答案:

A. p↑.llink:=q; q↑.rlink:=p; p↑.llink↑.rlink:=q; q↑.llink:=q;

B. p↑.llink:=q; p↑.llink↑.rlink:=q ; q↑.rlink:= p; q↑.llink:=p↑.llink;

C. q↑.rlink:=p; q↑.llink:=p↑.llink; p↑.llink↑.rlink:=q; p↑.llink:=q;

D. q↑.llink:=p↑.llink;q↑.rlink:=p; p↑.llink:=q;p↑.llink:=q;(编者按:原题如此)

21.在非空双向循环链表中q所指的结点前插入一个由p所指的链结点的过程依次为:

rlink(p) ← q; llink(p) ← llink(q); llink(q) ← p; ( )

A.rlink(q) ← p B.rlink(llink(q)) ← p C.rlink(llink(p)) ← p D.rlink(rlink(p)) ← p

【北京航空航天大学 2000 一、1(2分)】

22. 双向链表中有两个指针域,llink和rlink,分别指回前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为( )【南京理工大学1996 一、1(2分)】

A. p^.llink:=q; q^.rlink:=p; p^.llink^.rlink:=q; q^.llink:=p^.llink;

B. q^.llink:=p^.llink; p^.llink^.rlink:=q; q^.rlink:=p; p^.llink:=q^.rlink;

C. q^.rlink:=p; p^.rlink:=q; p^.llink^.rlink:=q; q^.rlink:=p;

D. p^.llink^.rlink:=q; q^.rlink:=p; q^.llink:=p^.llink; p^.llink:=q; 23.在双向链表指针p的结点前插入一个指针q的结点操作是( )。【青岛大学 2000 五、2(2分)】

A. p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;

B. p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink; C. q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q; D. q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;

24.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:( )。

A.p->next=s;s->next=p->next; B. s->next=p->next;p->next=s; C.p->next=s;p->next=s->next; D. p->next=s->next;p->next=s;

【青岛大学 2001 五、3(2分)】


考研“数据结构”复习书传说中的1800题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:傅雷家书=教案、

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: