数据结构复习题.docx

上传人:b****1 文档编号:1789922 上传时间:2022-10-24 格式:DOCX 页数:32 大小:66.22KB
下载 相关 举报
数据结构复习题.docx_第1页
第1页 / 共32页
数据结构复习题.docx_第2页
第2页 / 共32页
数据结构复习题.docx_第3页
第3页 / 共32页
数据结构复习题.docx_第4页
第4页 / 共32页
数据结构复习题.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据结构复习题.docx

《数据结构复习题.docx》由会员分享,可在线阅读,更多相关《数据结构复习题.docx(32页珍藏版)》请在冰豆网上搜索。

数据结构复习题.docx

数据结构复习题

〖线性表〗

解答题2.阅读下面算法,指出其中所有的错误。

(5分)

FUNClength(head:

linklist):

integer;

{求以head为头指针的不带头结点的循环单链表的长度}

f:

=head;

WHILEf<>headDO[n:

=n+1;p:

=p↑.1ink];

RETURN(n)

ENDPF;{length}

解答:

(1)n未初始化为0(1分)

(2)循环条件不对,应为WHILEf↑.1ink<>headDO(2分)

(3)循环变量f的值应在循环体内改变,即p应改为f(1分)

(4)未处理空表的情形。

(1分)

正确的算法是:

FUNClength(head:

linklist):

integer;

{求以head为头指针的不带头结点的循环单链表的长度}

n:

=0

IFhead<>NILTHEN

[

f:

=head↑.link;n:

=1;

WHILEf<>headDO[n:

=n+l;f:

=f↑.link]

];

RETURN(n)

ENDF;{length}

解答题4、在线形表的顺序和链式存储结构下,试分析下表各种基本运算时间复杂度,并填入相应的表格中。

(5分)

运算

求表长

取元素

取前趋

取后继

插入

顺序存储结构

O

(1)

O

(1)

O

(1)

O

(1)

O(n)

链式存储结构

O(n)

O(n)

O(n)

O

(1)

O(n)

单选题2.链表不具备的特点是_____。

(1分)

(1)可随机访问任一元素

(2)插入删除不需要移动元素

(3)不必事先预分存储空间(4)所需空间与线形表长度成正比

答案:

(1)

单选题4.若线性表最常用的操作是存取第i个元素及其前趋的值,则采用____存储方式节省时间。

(1分)

(1)单链表

(2)双链表(3)单循环链表(4)顺序表

答案:

(4)

单选题5.若某链表最常用的操作是在最后一个元素之后插入一个结点和删除最后一个结点,则采用______存储方式节省时间。

(1分)

(1)单链表

(2)双链表(3)单循环链表(4)顺序表

答案:

(4)

判断题1.在顺序表中取出第i个元素所花费的时间与i成正比(╳)(1分)

解答题2.将下面算法划线处用具体语句表示,使其完成所要求的功能。

(5分)

PROCins_linklist(1a:

linklisttp;i:

integer;b:

elemp);.

{1a为带头结点单链表的头指针,在i之前插入数据元素b}

p:

=La↑.next;j:

=0;

WHILE(循环控制条件)DO

[循环体部分];

IF(判定条件)

THENERROR(‘I非法’)

ELSE[new(s);s1↑.data:

=b;

插入链表部分]

ENDP;{inslinklist}

解答:

WHILE(p<>nilANDj

[p:

=p↑.next;j:

=j+1];

IF(p=nilORj>i-1)

THENERROR(‘i’)

ELSE[new(s);s↑.data:

=b;

s↑.next:

=p↑.next;

p↑.next:

=s]

解答题4.试设计一种链队列的存储结构,要求只用一个指针,并且使其插入和删除的时间复杂度均为O

(1)。

试画出存储结构,并指出队首和队尾。

(5分)

解答:

采用仅有尾指针rear的循环单链表表示队列(如图),队空时rear=nil,

队首的第一个结点(front=rear↑.next),队尾为最后一个结点(rear)。

填空题5.在数据结构中,从逻辑上可以把数据结构分为线性结构和非线性结构。

(2分)

算法题2.设双端链表结构如下;头结点有俩个域,其中:

firstlink指向第一个数据结点,lastlink

指向最后一个数据结点,链表空时,firstlink=lastlink=NIL。

阅读下面的算法,用适当的语句完成各画线的处理,使其能实现删除链表中的data域为x的所有结点功能。

(10分)

PROCDELETE(L,x);

p:

=L↑.firstlink;

q:

=L;

WHILEp<>NILDO

[IFp↑.data=xTHEN

CASE

L=q:

{第一个结点为x和只有一个结点且为x的处理}

L↑.1astlink=p:

{最后一个为x的处理}

Others:

{其它结点为x的处理}

ENDC

ELSE{不为x的处理}

]

ENDP;{DELETE}

算法:

PROCDELETE(L,x);

p:

=L↑.firstlink;

q=L;

WHILEp<>NILDO

[IFp↑.data=xTHEN

CASE

L=q:

[L↑firstlink:

=p↑.link;

IFp↑.link=NILTHENL↑.lastlink:

=NIL;p:

=p↑.link];

L↑.lastlink=p:

[L↑.lastlink:

=q;

q↑.link:

=p↑.link;p:

=p↑.link]

Others:

[q↑.link:

=p↑.1ink;p:

=p↑.link]

ENDC

ELSE[q:

=p;p:

=p↑.link]

]

ENDP;{DELETE}

算法题1、假设以下不带头结点的循环链表Q表示队列,并且只一个rear指针指向队尾元素结点,队列空时Q.rear=nil试编写相应的出队函数FUNCdelq(Q):

elem和队列操作addq(Q,elem)的算法.(10分)

算法:

PROCaddq(Q,elem);

New(p);P↑.data:

=elem:

(1分)

IFQ.rear=nilTHENp↑.link:

=p(1分)

ELSE[P↑.link:

=Q.rear↑.1ink;Q.rear↑.1ink:

=p;](2分)

Q.rear:

=p(1分)

ENDP;

FUNCdelq(Q):

elem:

IFQ.rear=NILTHENRETURN(NULL)(1分)

ELSE[p:

=Q.rear↑.link;(1分)

IFp=Q.rearTHENQ.rear:

=NIL//只有一个结点

ELSEQ.rear↑.link:

=p↑.link;(2分)

RETURN(p↑.data)](1分)

ENDF;

单项选择题10.循环链表的主要优点是()。

(1分)

A.已知某结点位置后能容易找到其直接前趋

B.在进行插入、删除元素时能保证链表不断开

C.不再需要头指针

D.从表中任一个结点出发都能扫描整个链表

答案:

D

填空题1.线性表、栈和队列都是线性结构,可以在线性表的任何位置插入和删除元素:

而栈只能在栈顶插入和删除元素;对于队列只能在队尾插入元素、在队首删除元素。

(5分)

简答题4.线性表有哪两种存储结构?

在这两种存储结构中元素之间的逻辑关系分别是通过什么决定的?

(5分)

答:

有顺序和链式两种存储结构,顺序结构中元素之间的逻辑关系由物理存储位置决定,链式结构中元素之间的逻辑关系由链指针决定。

算法题1、试编写算法,将一个带头结点的单循环链表A,按结点值分解为奇数和偶数两个具有相同结构的链表A和C,其中C的结点是原A中结点值为偶数的结点。

要求利用原链表的结点。

可用ODD(p↑.data)逻辑函数判断指针p的值data是否为奇数,是则返回true。

(9分)

PROCODDEVEN(1a,lc:

link);

New(lc);pc:

=lc;//建C的头结点

P:

=la↑.next;Q:

=la;

WHILEP<>laDO

IFODD(P↑.data)

THEN[Q:

=P;P:

=P↑.next]

ELSE[Q↑.next:

=P↑.next;//删除

pc↑.next:

=P;pc:

=P;//插入

P:

=Q↑.next];

pc↑.next:

=lc//lc成循环链

ENDP;{ODD_EVEN}

【经典考题】数据结构是研究数据的和,以及它们之间的相互关系,并对这种结构定义相应的,设计出相应的,而确保经过这些运算后所得到的新结构是结构类型。

解:

本部分基本上都是概念试题。

参考答案依次为:

物理结构、逻辑结构、运算、算法、原来的。

【经典考题】在数据结构中,与所使用的计算机无关的数据叫A结构:

链表是一种采用B存储结构存储的线性表;链表适用于C查找;在链表中进行D操作的效率比在顺序存储结构中进行D操作效率高;二分查找E存储结构。

供选择的答案:

A)①存储②物理③逻辑④物理和逻辑

B)①顺序②网状③星式④链式

C)①顺序②二分法③顺序,也能二分法④随机

D)①二分法查找②快速查找③顺序查找④插入

E)①只适用于链式②只适用于顺序③既适用于顺序也适用于链式

④既不适用于顺序也不适用于链式

解:

本题旨在考察基本的概念。

答案为:

A)③;B)④;C)①;D)④;E)②。

【经典考题】在双向链表存储结构中,删除P所指的结点时,需修改指针()。

A)(P->llink)->rlink=P->rlinkB)P->llink=(P->llink)->llink

(P->rlink)->llink=P->llink((P->llink)->llink)—>rlink=P

C)((P->llink)->llink)->rlink=PD)((P->rlink)->rlink)->llink=P

P->llink=(P->llink)->llinkP->rlink=(P->rlink)->rlink

解:

答案为A)。

考虑在P所指结点后或前插入一结点的应如何做?

【经典考题】根据线性表的链式存储结构形式,每个结点所含指针的个数,链表可分为A和B:

而根据指针的连接方式,链表又可分为C和D。

解:

A:

单链表;B:

多重链表;C:

循环链表;D:

普通链表。

【经典考题】在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度为。

解:

O(n)。

【经典考题】

(1)写出在双向链表中,在指针P所指结点前面插入一个结点*S的语句序列。

(2)写出带头结点的双向循环链表L为空表的条件。

解:

(1)S->Prior=P->Prior;P->Prior->Next=S;

S->Next=P;P->Prior=S;

(2)(L==L->Next)&&(L==L->Pnor)考虑不带头结点的双向循环链表L为空表的条件?

【经典考题】将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是()。

A)nB)2n-1C)2nD)n-1

解:

答案为A)

 

〖栈和队列〗

解答题3、设循环队列cq的队首指针为front,队尾指针为rear,队列可容纳的最大元素个数为max,分别用下列三种方法来区分队满或队空,试在表中写入相应的处理。

(5分)

用记数变量C记载元素个数

用标志位

牺牲一个元素的存储单元

初始空队列各变量初值

cq.fornt:

=cq.rear:

=0C:

=0

cq.fornt:

=cq.rear:

=0tag:

=0

cq.fornt:

=cq.rear:

=0

出队前判队空条件

C=0

tag=0ANDcq.fornt=cq.rear

c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1