数据结构期中测试

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

数据结构期中测试

一、选择题(共30分)

1.数据结构中,与所使用的计算机无关的是数据的结构。

[A] 存储[B] 物理[C] 逻辑[D] 逻辑和存储

2.二维数组A[0..9, 0..10] 采用行优先的存储方法,若每个元素各占3个存储单元且A[0,0] 的地

址为200,则A[6,9]的地址为_________。

[A] 422 [B] 425[C] 428 [D] 431

3.在线性表的下列基本运算中,只有不是加工型运算。

[A] 定位[B] 排序[C] 插入[D] 删除

4.若某线性表最常用的操作是取第i个元素和找第i个元素的直接前驱元素,则采用存储

方式最节省运算时间。

[A] 顺序表[B] 单链表[C] 双链表[D] 单循环链表

5.已知单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度为。

[A]O(1) [B] O(m)[C] O(n)[D] O(m+n)

6.利用双向链表作线性表的存储结构的优点是:

[A] 便于进行插入和删除的操作[B] 提高按关系查找数据元素的速度

[C] 节省空间[D] 便于销毁结构释放空间

7.若编号为1,2,3,4,5,6的六节车厢依次通过一段栈形轨道,则在出口处不可能得到____的次序。

[A] 143562[B] 456321 [C] 145326 [D] 426531

8.设 n 是正整数, 则在下列程序段中, 语句*的执行次数是

[A] ⎣log2n⎦[B] ⎣log2n⎦ -1

[C] ⎣log2n⎦ + 1 [D]⎡ log2n ⎤

j:=1;

WHILE (j <= n)

* j:=j*2;

9.在计算递归函数时,若不用递归则应借助数据结构

[A] 数组[B] 队列[C] 链表[D] 栈

10.若用数组A[0..m-1]存放循环队列的元素值,头、尾指针分别为front和rear,则当前元素个

数为_______。

[A] rear-front+1[B] (rear-front+1) MOD m

[C] (rear-front+m) MOD m[D] (rear-front) MOD m

二、填空题(总共25 分)

1.构成抽象数据类型的三个要素为:、和。

2.算法独立于具体的,与具体的程序设计语言。

3.称算法的时间复杂度为O(f(n)),它的含义是,算法执行时间的和相同。

4.数据的存储结构是的映象,其顺序映象的特点是借助;链式映象的特点是借助。

5. 假设带头结点的单循环链表中头指针L指向链表中最后一个结点,则在第一个结点之前插入指针s 所指结点的语句组是。

6.一个抽象数据类型的软件模块通常应包含_____ ___,____ ____,____ ____三个部分。

7.若一个栈的输入序列是1,2, n,输出序列的第一个元素是n,则第i个输出元素是。

8.设字符串S='abbbabbc', T='bb', R='b',则置换操作REPLACE(S,T,R) 的执行结果是

S = 。

9.已知单链表中指针p所指结点有后继结点,则判别该结点只有一个后继结点的条件

是。

10.已知字符串A='IBM computer',B='com',求长函数LENGTH(A)的值为12,则定位函

数INDEX(A, B, 2)的值是。

三、(10分)串采用定长顺序存储结构,写出求子串的定位函数

int index(Ssstring S, Sstring T ,int pos){

//返回子串T在主串中第pos个字符之后的位置.若不存在,则函数值为0

//T非空,1<=pos<=strlength(s)

{

}

四、(10分)(用图形)阅读下列算法,举例说明该算法的功能。

void ss( LinkList ha ) {

// ha 为指向带头结点的单链表的头指针

LinkList p,q,s,min;

p = ha;

while (p->next) {

min = p; q = p->next;

while ( q->next ) {

if (q->next->data < min->next->data) min = q;

q = q->next;

}//while

if (min != p) {

s = min->next; min->next = s->next;

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

}//if

p = p->next;

}//while

}//ss

五、(10分)已知两个有序表 A 和 B ,都以带头结点的单链表作存储结构, ha 和 hb 分别是它们的头指针, 编写算法判别表 A 中的元素是否都包含在表 B 中。

例如, 若表 A = (2,3,9), 表 B =(1,2,3,4,5,7,9), 则返回'TRUE';

若表 A = (2,5,8), 表 B =(1,2,3,4,5,7,9), 则返回'FALSE'。

链表的类型说明为

typedef struct LNode {

ElemType data;

Struct LNode *next;

}Lnode, *LinkList;

六、(10分)

const int LIST_INIT_SIZE = 80; //性表存储空间的初始分配量

typedef struct {

ElemType *elem; // 存储空间基址

相关文档
最新文档