数据结构课堂习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章绪论

一、单项选择题

1.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科。

①A.操作对象B.计算方法C.逻辑存储D.数据映象

②A.结构B.关系C.运算D.算法

2.数据结构被形式地定义为(D,R),其中D是①的有限集合,R 是K上的②的有限集合。

①A.算法B.数据元素C.数据操作D.逻辑结构

②A.操作B.映象C.存储D.关系

3.在数据结构中,从逻辑上可以把数据结构分成①。

A.动态结构和静态结构B.紧凑结构和非紧凑结构

C.线性结构和非线性结构D.内部结构和外部结构

4.线性表的顺序存储结构是一种①的存储结构,线性表的链式存储结构是一种②的存储结构。

A.随机存取B.顺序存取C.索引存取D.散列存取5.在计算机存储器内表示时,物理地址和逻辑地址是连续的,称之为

A.逻辑结构B.顺序存储结构

C.链表存储结构D.以上都不对

1. A,B

2. B,D

3. C

4.A,B

5. B

二、填空题

1.数据逻辑结构包括①、②、③和④四种类型。

2.线性结构中元素之间存在①关系,树形结构中元素之间存在②关系,图形结构中元素之间存在③关系。

3.下面程序段的时间复杂度是①。

for(i=0; i

for(j=i; j

4.下面程序段的时间复杂度是①。

s=0;

for(i=0;i

for(j=0; j

s+=b[i][j];

sum=s;

5.下面程序段的时间复杂度是①。

for (i=1; i

for (j=1; j

for (k=1; k

1.集合、线性、树、图

2.一对一、一对多、多对多

3. O(2n)

4. O(2n)

5.O(2n)

线性表

一、填空题

1.设长度为n的顺序线性表在任何位置上插入或删除操作都是等概

率的,则插入一个元素时平均需要向__移动_______个元素,删除一个元素时平均需要向___移动______个元素。

2.线性表的链式存储结构中,元素之间的线性关系是通过结点中的

________域来实现的。

3.线性表的顺序存储结构中逻辑上相邻的元素,物理位置

__________相邻;线性表的链式存储结构中逻辑上相邻的元素,物理位置__________相邻。

4.对于顺序表,访问结点的时间复杂度为_____,增加、删除结点的

时间复杂度为_____。对于单链表,访问结点的时间复杂度为_____,增加、删除结点的时间复杂度为_____;在已知的结点*p 后插入一个新结点的时间复杂度为____,删除已知结点*p的时间复杂度为____。

5.双向链表中每个结点含有两个指针域,其中一个指针域指向

_______结点,另一个指针域指向______结点。

6.在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,

可执行如下操作:

q=head;

while (q->next!=p) q=q->next;

s= new Node; s->data=e;

q->next= ; //填空

s->next= ; //填空

7.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:

q= p->next;

p->next= _ ___; //填空

free(); //填空

8.在一个单链表中p所指结点之后插入一个s所指结点时,应执行

s->next=__ __和p->next=____的操作。

9.以head为头结点的循环双链表为空时,应满足

head->prior= ,head->next= 。

1. 后,n/2,前,(n-1)/2

2.指针

3.一定,不一定

4.O(1) ,O(n);O(n) ,O(n) ;O(1),O(1)

5.前驱,后继

6. s, p

7. q->next, q

8. p->next, s

9. head, head

二、选择

1.在长度为n的顺序线性表中删除第i个元素(1<=i<=n),则需要向前

移动的元素个数为()。

⑴n-i ⑵n+1-i ⑶n-1-i ⑷i

2.设指针p指向单链表中的结点A,结点A的后继结点是结点B,

则删除结点B的操作为()。

⑴p->next=p ⑵p=p->next

⑶p=p->next->next ⑷p->next=p->next->next

3.设指针p指向单链表中结点A,指针q指向单链表中结点A的前

驱结点B,指针s指向被插入的结点X,则在结点A和结点B之间插入结点X的操作为()。

⑴s->next=p->next;p->next=s;

⑵q->next=s;s->next=p;

⑶p->next=s->next;s->next=p;

⑷p->next=s;s->next=q;

4.在长度为n的顺序线性表中的第i个元素(1<=i<=n+1)之前插入一个

新元素时,则需要向后移动的元素个数为()。

⑴n-i ⑵n+1-i ⑶n-1-i ⑷i

5.在长度为n的有序线性表中插入一个元素后仍然保持有序的平均

时间复杂度为()。

⑴O(log2n) ⑵O(1) ⑶O(n2) ⑷O(n)

6.设指针p指向双向链表中的结点A,指针s指向被插入的结点X,

则在结点A之后插入结点X的操作为()。

⑴p->next=s;s->prior=p; p->next->prior=s;s->next=p->next;

⑵s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;

⑶p->next=s;p->next->prior=s;s->prior=p;s->next->p->next;

⑷s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;

7.指针p指向双向链表中的结点A,则删除结点A的操作是()。

⑴p->prior->next=p->next;p->next->prior=p->prior;

相关文档
最新文档