数据结构试题

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

嘉兴学院试卷

2011—2012学年第1学期期中考试试卷课程名称:数据结构使用班级:信息11级考试形式:开卷试卷代码:

班级:姓名:学号:题号一二三四五六七八总分

得分

评阅人

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共10分)

1.数据的逻辑结构从形式上可用二元组(D,R)表示,其中R是 B 的有限集。

A.算法B.数据元素C.数据操作D.数据关系

2.数据结构课程研究的内容涉及到三个方面的内容,它们分别是数据的逻辑结构、数据的

C 和数据的操作。

A.数据元素B.逻辑结构C.存储结构D.计算方法

3.线性结构的顺序存储结构是一种随机存取的存储结构,而链式存储结构是一种

A 的存储结构。

A.顺序存取 B.随机存取 C.索引存取 D.散列存取

4.线性表L在情况下,最适合采用链式存储结构来实现算法。

A.不需经常对L进行修改 B.需经常对L进行删除和插入操作

C.需经常修改L中结点值 D.L中结点结构复杂

5.在一个含有n个结点的有序单链表中插入一个新结点,使单链表仍然保持有序的算法的时间复杂度是 A 。

A.O(1)

B. O(log2n)

C. O(n)

D. O(n2)

6.在循环顺序队列中,假设以设置一个计数变量num的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则下面不是队列判满或判空条件是()。

A.front==rear B. front= =rear && num==0

C. front= =rear && num>0

D. num= =maxSize

7.一个栈的入栈序列是a, b, c, d, e, 则栈的不可能的出栈序列是。

A.abcde B.decba C.edcba D.dceab

8.在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxSize。则顺序栈的判满的条件是。

A.top = =0 B.top= =-1 C. top = =maxSize D.top = = maxSize-1 9.设线性表有n个元素,严格说来,以下操作中,()在顺序表上实现比链表上实现比

链表上实现效率更高。

Ⅰ输出第i个(0≤i≤n-1)数据元素的值

Ⅱ交换第3个数据元素与第4个数据元素的值

Ⅲ顺序输出这n个数据元素的值

A.Ⅰ B.Ⅰ、Ⅱ C.Ⅰ、Ⅲ D.Ⅱ、Ⅲ

10. 在一个单链表中的p和q两个结点之间插入一个新结点,假设新结点为s,则修改链的

Java语句序列是()。

A.s.setNext(p); q.setNext(s); B. p.setNext(s.getNext()); s.setNext(p);

C. q.setNext(s.getNext()); s.setNext(p);

D. p.setNext(s); s.setNext(q);

二、填空题(20分,每空1分)

1.算法的复杂度通常体现为时间复杂度和空间复杂度两个指标。2.设有函数T (n)=3n2-n+4,T (n)=O ( n^2 )。

3.要将一个顺序表{a0,a1,……,a n-1}中第i个数据元素a i(0≤i≤n-1)删除,会引起 n-1-1 个数据元素的移动。

4.队列也是一种操作受限的线性表,它与栈不同的是,队列中所有的插入操作均限制在表的一端进行,而所有的删除操作都限制在表的另一端进行,允许插入的一端称为队尾,允许删除的一端称为队首。队列具有先进先出的特点。5.在一个单链表中删除p所指结点时,可执行如下操作:

q=p.getNext(); p.setData(q.getData());p.setNext( q.getNext() ); 6.设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出栈的序列是e2、e4、e3、e6、e5、e1,则栈S 的容量至少应该是 6 。

7.若双向链表的结点类描述为:public class DuLNode {

pvivate Object data;

private DuLNode piror;

private DuLNode next;

……

}

则在带头结点的双向链表中的p结点之前插入一个新结点s,其修改指针的java语句序列是:

1)p.getPiror().setNext(s);

2)s.setPiror(p.getPiror());

3)s.setNext(p);

4)p.setPiror(s);

8.在不带表头结点的链栈中,栈顶指针top直接指向栈顶元素,如果链栈中结点的类描述为:

class Node {

private Object data;

private Node next:

…… }

则将一个新结点p入栈时修改链的两个对应语句是:

1)p.setNext(top);

2)top=p;

9.如果循环顺序队列类的描述如下:

class CircleSqQueeu {

pvivate Object[ ] queueElem; //队列的存储空间

pvivate int front;

pvivate int rear;

……}

假设以少用一个存储单元的方法来区分队列判满和判空的条件,其中front和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的长度是maxSize+1 。10.在顺序存储、链式存储、索引存储和散列存储这4种存储方式中,最基本、最常用的两种存储结构是

顺序存储和链式存储。

11.按数据元素的逻辑关系来系,数据结构可分为四种:线性表、集合、树和图。其中图型结构中的数据元素之间存在“多对多”的关系。

12. 栈元素存储在数组stackElem中,假设栈顶指针top是指向栈顶元素的下一个存储单元,

则顺序栈判空的条件是 top==0 ;栈顶元素的访问形式是。

三、判断题(共10分,2分1题,对的打“√”,错的打“×”)

1. 线性表中数据元素的逻辑顺序与存储顺序总是一致的。(错)

2.链式存储时,存储区域可以连续,也可以不连续。(对)

3.删除顺序表中第0个数据元素a0的时间复杂度是O(n)。(对)

4.判断一个链栈为空的条件件是表达式top= =null的值为真。(对)

5.双向循环链表中,任意一结点的后继指针均指向其逻辑后继。(错)

四、应用与计算题(共26分)

1.求下列程序段的时间复杂度。(9分)

(1)for (i=0; i

for (j=0; j

A[i][j]=0;

时间复杂度是:O(n^2)

(2)a=0;b=1;

for (i=0;i<=n; i++)

{ s=a+b;

b=a;

a=s;

}

时间复杂度是:O(n)

(3)a=1; m=1;

while(a

{

m+=a; a*=3;

}

时间复杂度是:O(n)

2.设有数据的逻辑结构的二元组定义形式为B=(D,R),其中D={a0,a1,…,a n-1},

R={| i=0,1,…,n-2},请画出此逻辑结构对应的顺序存储结构和链式存储结构的示意图。(共6分)

相关文档
最新文档