国家开放大学(中央广播电视大学)2015年秋季学期
“开放本科”期末考试数据结构(本)试题
2016年1月
一、单项选择题(每小题2分,共30分)
1.对稀疏矩阵进行压缩存储,可采用三元组表,一个有10行的稀疏矩阵A共有97个零元素,其相应的三元组表共有3个元素。该矩阵A有( )列。 A.8 B.9 C.7 D.10
答案:10
2.子串“acd”在主串“abdcacdefac”中的位置是( )。 A.3 B.5 C.7 D.1
答案:5
3.序列12,16,8,4按顺序依次进栈,按该栈的可能输出序列依次入队列,该队列的不可能输出序列是( )。(进栈、出栈可以交替进行)。 A.16,12,8,4 B.4,8,12,16 C.8,4,16,12 D.16,12,4,8
答案:B.4,8,12,16
4.在一个不带头结点的链队中,假设f和r分别为队头和队尾指针,对该队列进行出队操作,并把结点的值保存在变量e中,其运算为( )。 A.e=f->data; r=r->next B.e=f->data; r->next=r C.e=f->data; f=f->next D.e=f一>data; f一>next=f
答案:C.e=f->data; f=f->next
5.数据的逻辑结构在计算机内存中的表示是( )。 A.给相关变量分配存储单元 B.数据的存储结构 C.数据的逻辑结构 D.算法的具体体现
答案:数据的存储结构
6.以下说法正确的是( )。
A.线性表的链式存储结构必须占用连续的存储空间 B.一种逻辑结构可以有不同的存储结构 C.一种逻辑结构只能有唯一的存储结构
D.线性表的顺序存储结构不必占用连续的存储空间
答案:一种逻辑结构可以有不同的存储结构
7.在一个单链表中要删除p所指结点的后继结点,可执行q=p一>next;和( )。 A.p一>next=q->next B.p=q->next C.p->next=q D.p->next=q
答案:A.p一>next=q->next
8.在数据结构和算法中,与所使用的计算机有关的是( )。 A.数据元数间的抽象关系 B.数据的存储结构 C.算法的时间复杂度 D.数据的逻辑结构
答案:数据的存储结构
9.以下表中可以随机访问的是( )。 A.单向链表 B.双向链表
C.单向循环链表 D.顺序表
答案:顺序表
10.头指针为head的不带头结点的单向链表为空的判定条件是逻辑表达式( )为真。
A.head==NULL
B.head->next==NULL C.head->next=NULL D.head一>next!=NULL
答案:head==NULL
11.设有一个长度为32的顺序表,要在第5个元素之前插入1个元素(也就是插入元素作为新表的第5个元素),需移动元素个数为( )。 A.25 B.28 C.5 D.6
答案:28
12.设有一个长度为33的顺序表,要删除第10个元素(下标从1开始)需移动元素的个数为( )。 A.11 B.10 C.23 D.14
答案:23
13.设有一个28阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第26号元素对应于矩阵中的元素是( )。 A.a7,5 B.a7,6 C.a6,5 D.a7,4
答案:a7,5
14.在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点, 且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p一>next; 和( )。 A.p=q->next B.p->next=q C.q=p
D.q一>next=p
答案:q一>next=p
15.在一棵二叉树中,若编号为16的结点是其双亲结点的左孩子,则他的双亲结点的顺序编号为( )。 A.7 B.8 C.32 D.33
答案:8
二、填空题(每小题2分,共24分)
16.数据的逻辑结构在计算机中的表示称为( 物理存储 )结构。
17.四类基本结构分别为( 集合、线性、树形、图状 )结构。
18.队列的操作特点是先进( 先出 )。
19.广义表((b,a,c),c,d,(e,i,j,k))的表尾是( (c,d,(e,i,j,k)) )。
20.设有一个长度为20的顺序表,第8号元素到第20号元素依次存放的值为8,9,…,20。某人想要在第8号元素前插入1个元素7(也就是插入元素作为新表的第8个元素),程序中他的做法是
用语句for(i=8; i<=20; i++) a[i+1] =a[i] ; a[8] =7; 即从第8号元素开始, 直到第20号元素,每个元素依次向后(右)移动1个位置,然后把7存放在第8号位置。
事实上这样做是错误的.其结果是新表中第20号元素的值为( 8 )。
21.设有一棵有38个结点的完全二叉树,该树共有( 6 )层。(根所在结点为第1层)
22.一棵有18个结点的二叉树,其2度结点数的个数为8,则该树共有( 1 )个1度结点。
23.对一组记录(1,3,9,2,12,7,5,4,6)进行直接插人排序(由小到大排序),当把第6个记录7插人有序表,为寻找插人位置需比较( 3 ) 次。
24.序列5,3,8,4,7,6,采用冒泡排序算法,经一趟冒泡后,序列的结果是( 3,5,4,7,6,8 )。(按升序排序)
25.广义表(b,a,(c,b),f,e,((i,j),k))的长度是( 6 )。
26.一棵有18个叶结点的哈夫曼树,则该树共有( 17 )个非叶结点。
27.对稀疏矩阵进行压缩存储,可采用三元组表,一个8行7列的稀疏矩阵A共有51个零元素,其相应的三元组表共有( 5 )个元素。
三、问答和综合题(每小题10分,共30分)
28.设数据集合a={6,17,10,13,8,15,12,18,14} (1)依次取a中各数据,构造一棵二叉排序树。 (2)给出对该二叉树中序遍历的序列。
(3)对该二叉树进行查找,成功查找到14要进行多少次元素间的比较?
29.设有序表为(2,5,11,12,30,48,58),元素的序号依次为1,2,3,…7. (1)画出对上述查找表进行折半查找所对应的判定树(树中结点用序号表示)。 (2)说明成功查找到元素11需要经过多少次比较? (3)在等概率条件下,给出成功查找的平均查找长度?
30.(1)如图1所示,若从顶点a出发,首先经过顶点c按广度优先搜索法进行遍历,给出可能得到的一种顶点序列。
(2)如图1所示,给出从顶点h出发,首先经过顶点d和e按深度优先搜索法进行遍历,给出可能得到的一种顶点序列。
(3)一组记录的关键字序列为(80,57,41,39,46,47),利用堆排序的方法的方法建立小根堆(堆顶元素是最小元素),给出按筛选法建立的的初始堆。
四、程序填空题(每空2分,共16分)
31.以下冒泡法程序对存放在a[1],a[2],……,a[n]中的序列进行冒泡排序,完成程序中的空格部分,其中n是元素个数,程序按升序排列。 void b sort(NO DEal, int) { NODE temp;
inti, j, flag;
for(j=1; j<=n一1; ① j++ { flag=0;
for(i=1; ② i<=n一j ;i十十) if(a[i] .key>a[i+1] .key) { flag==1;
③ temp=a[i] ;
a[i] =ali+1] ; ④ a[i+1] =temp;
}
if(flag==0) break;
} }
程序中flag的功能是⑤ 判断某一趟排序中是否有元素交换
32.以下函数为链栈的出栈操作,出栈结点的数据由x返回 struct node
{ Elem Type data;
struct node*next; };
Elem Type Pop( ) { in tx;
if(top==① NULL ) {
printf(\"栈下溢错误!\\n\") ;
exit(1) ;
}
X= top→data ; top= top-next ; return x; }
四、程序填空题(每空2分,共16分)
31.(10分) (1) (2)
(3) (4) (5) 32.(6分) (1) (2) (3)
国家开放大学(中央广播电视大学)2016年春季学期“开放本科”期末考试
数据结构(本)试题2016年7月
一、单项选择题(每小题2分,共30分)
1.对稀疏矩阵进行压缩存储,可采用三元组表,一个10行8列的稀疏矩阵A共有73个零元素,其相应的三元组表共有( )个元素。 A.8 B.80 C.7 D.10
参考答案:7
2.字符串( ) 是“abcd321ABCD”的子串。 A.“21AB” B.“abcD” C.“aBCD” D.“321a”
参考答案:“21AB”
3.栈和队列的共同特点是( )。 A.都是操作受限的线性结构 B.元素都可以随机进出 C.都是先进后出 D.都是先进先出
参考答案:都是操作受限的线性结构
4.在一个链队中,假设f和r分别为队头和队尾指针,p指向一个新结点,要为结点p所指结点赋值x, 并人队的运算为p->data=x; p->next=NULL; ( ). A.f一>next=p; f=p; B.r一>next=p; r=p; C.r=p; p->next=r; D.p->next=f; f=p;
参考答案:r一>next=p; r=p;
5.数据结构中,与所使用的计算机无关的是数据的( )结构。 A.逻辑 B.存储
C.逻辑与存储 D.物理
参考答案:逻辑
6.顺序表所具备的特点之一是( )。 A.可以随机访问任一结点 B.不需要占用连续的存储空间 C.插人元素的操作不需要移动元素 D.删除元素的操作不需要移动元素
参考答案:可以随机访问任一结点
7.数据元素是数据的基本单位,它( )。 A.只能有一个数据项组成 B.至少有二个数据项组成
C.可以是一个数据项也可以由若干个数据项组成 D.至少有一个数据项为指针类型
参考答案:可以是一个数据项也可以由若干个数据项组成
8.设有头指针为head的非空的单向链表, 指针p指向其尾结点,链表成为单向循环链表,则可利用下述语句( )。 A.p=head; B.p=NULL; C.p->next=head; D.head=p;
参考答案:p->next=head;
9.在线性表的顺序结构中,以下说法正确的是( )。 A.逻辑上相邻的元素在物理位置上不一定相邻 B.数据元素是不能随机访问的
C.逻辑上相邻的元素在物理位置上也相邻 D.进行数据元素的插人、删除效率较高
参考答案:逻辑上相邻的元素在物理位置上也相邻
10.对链表,以下叙述中正确的是( )。 A.不能随机访问任一结点
要使该单向
B.结点占用的存储空间是连续的
C.插人删除元素的操作一定要要移动结点 D.可以通过下标对链表进行直接访问
参考答案:不能随机访问任一结点
11.设有一个长度为35的顺序表,要在第5个元素之前插入1个元素(也就是插入元素作为新表的第5个元素),则移动元素个数为( )。 A.30 B.31 C.5 D.6
参考答案:31
12.设有一个长度为40的顺序表,要删除第10个元素(下标从1开始)需移动元素的个数为( )。 A.11 B.10 C.30 D.31
参考答案:30
13.设有一个25阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素ar,s在一维数组B中的下标是( ). A.25 B.24 C.26 D.27
参考答案:26
14.线性表在存储后,如果相关操作中有要求:利用已知的指向某结点的指针或序号,访问该结点的前驱结点,则采用( )的存储方式是不可行的。 A.单向链表 B.双向链表
C.单向循环链表 D.顺序表
参考答案:单向链表
15.在一棵二叉树中,若编号为i的结点存在左孩子,i结点的左孩子的顺序编号为( )。 A.i/2.0
B.2*i C.2*i+1 D.i十2
参考答案:2*i
二、填空题(每小题2分,共24分)
16.广义表((b,a,c),c,d,f,e,((i,j),k))的长度是____________.
参考答案:6
17.数据结构中,数据元素之间的抽象关系称为____________结构。
参考答案:逻辑
18.栈的操作特点是后进______________.
参考答案:先出
19.广义表((b,a,c),c,d,f,e,((i,j),k))的表头是________________.
参考答案:(b,a,c)
20.设有一个长度为18的顺序表,第8号元素到第18号元素依次存放的值为8,9,…,18.某人想要删除第8号元素, 程序中他的做法是用语句for(i=18; i<=9; i--) a[i-1] =a[i] ; 即从第18号元素开始,直到第9号元素,每个元素依次向前(左)移动1个位置,事实上这样做是错误的,其结果新表中第9号元素的值为_________________________.
参考答案:18
21.一棵二叉树,有1个2度结点,2个1度结点,则该树共有________个结点。
参考答案:5
22.设有一棵深度为5的完全二叉树,该树共有21个结点,第5层上有_____个结点。(根所在结点为第1层)
参考答案:6
23.中序遍历______________树可得到一个有序序列。
参考答案:二叉排序树
24.序列12,10,13,11,16,14,采用冒泡排序算法,经一趟冒泡后,序列的结果是_____________________.(按升序排序)
参考答案:10,12,11,13,14,16
25.对16个元素的序列用冒泡排序法进行排序,共需要进行________趟冒泡。
参考答案:15
26.一棵有16个叶结点的哈夫曼树,则该树共有_________个非叶结点。
参考答案:15
27.在对一组记录(40,24,82,9,1,78,46,31,69)进行直接插人排序(由小到大排序),当把第7个记录46插人到有序表时,为寻找插人位置需比较__次。
参考答案:3
三、问答和综合题(每小题10分,共30分)
28.设有序表为(5,8,14,15,33,51,61,73,81,82,93),元素的序号依次为1,2,3,……,11.
(1)画出对上述查找表进行折半查找所对应的判定树(树中结点可用序号表示) (2)说明成功查找到元素33需要经过多少次比较? (3)在等概率条件下,给出成功查找的平均查找长度?
参考答案:
29.(1)如图1所示,若从顶点a出发,首先经过c按图的深度优先搜索法进行遍历,给出可能得到的一种顶点序列。
(2)设有向图如图2所示下,写出首先删除顶点1的1种拓扑序列。
参考答案:
30.(1)设数据集合a={7,4,9,8,6,5,3},依次取a中各数据,构造一棵二叉排序树。
(2)对该二叉树进行查找,成功查找到5要进行多少次元素间的比较? (3)给出对上述二叉排序树进行中序遍历的序列
参考答案:
四、程序填空题(每空2分,共16分)
31.以下函数在a[0]到a[n-1]中,用折半查找算法查找关键字等于k的记录,查找成功返回该记录的下标,失败时返回一1,完成程序中的空格 typedef struct { int key;
… } NODE;
int Binary_Search(NODE a[] ,int n,int k) {
int low, mid, high;
low=0;
high=n一1;
while①_________________ {
mid=(low+high) /2;
if(a[mid] .key==k)
return②________________; elseif③____________________
low=mid+1;
else④________________;
}
⑤__________________; }
参考答案: (1) low<=high
(2) mid
(3) a[mid] .key struct node { ElemType data; struct node*next; }; struct node*top; void Push(ElemType x) { struct node*p; p=(struct node*) malloc①______________; p->data=x; ②___________________; ③___________________; } 参考答案: (1) sizeof(struct node) (2) p->next=top (3) top=p 国家开放大学(中央广播电视大学)2017年春季学期“开放本科”期末考试 数据结构(本)试题2017年6月 一、单项选择题(每小题3分,共30分) 1.设有一个长度为26的顺序表,要插人一个元素,并使它成为新表的第6个元素,需移动元素的个数为( )。 A.21 B.22 C.20 D.19 参考答案:21 2.头指针为head的带头结点的单向循环链表, p指向尾结点, 要使该链表成为不带头结点的单向循环链表, 可执行head=head->next; 和( )。 A.p=head->next B.head->next=p C.head->next=p->next D.p->next=head; 参考答案:p->next=head; 3.元素111,113,115,117按顺序依次进栈,则该栈的不可能输出序列是( )(进栈出栈可以交替进行)。 A.117,115,113,111 B.111,113,115.117 C.117,115,111,113 D.113,111,117,115 参考答案:117,115,111,113 4.设有一个20阶的对称矩阵A(第一个元素为a1.1),采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵元素a6.2在一维数组B中的下标是( )。 A.21 B.17 C.28 D.23 参考答案:17 5.设有串pl=”ABADF”, P2=”ABAFD”, P3=”ABADFA”, P4=”ABAF”, 以下四个串中最大的是( )。 A.p3 B.p2 C.pl D.p4 参考答案:p2 6.在一棵二叉树中,若编号为i的结点存在左孩子,则左孩子的顺序编号为( ). A.2i+1 B.2i-1 C.2i D.2i+2 参考答案:2i 7.如图1所示,若从顶点a出发,按图的广度优先搜索法进行遍历,则可能得到的一种顶点序列为( ). A.abecdf B.aecbdf C.aebcfd D.aedfcb 参考答案:aecbdf 8.线性表以( )方式存储,能进行折半查找。 A.链接 B.顺序 C.关键字有序的顺序 D.二叉树 参考答案:关键字有序的顺序 9.一棵具有38个结点的完全二叉树,最后一层有( )个结点。 A.7 B.5 C.6 D.8 参考答案:7 10.下图的拓扑序列是( A.52346 B.23645 C.56234 D.23564 参考答案:56234 二、填空题(每小题2分,共24分) 11.结构中的数据元素存在多对多的关系称为____________结构。 参考答案:图状 12.n个元素进行冒泡法排序,第j趟冒泡要进行__________次元素间的比较。 参考答案:n-j 13.中序遍历__________树可得到一个有序序列。 参考答案:二叉排序树 14.待排序的序列为8,3,4,1,2,5,9,采用直接选择排序算法,当进行了两趟选择后:结果序列为____________________. 参考答案:1,2,4,8,3,5,9 15.广义表((a,b),d,e,((i,j),k))的长度是__________. 参考答案:4 16.广义表的(c,a,(a,b),d,e,((i,j),k))深度是__________. 参考答案:3 17.对稀疏矩阵进行压缩存储,可采用三元组表,一个有10行10列的稀疏矩阵A共有95个零元素,其相应的三元组表共有__________个元素。 参考答案:5 18.在对一组记录(50,49,97,22,16,73,65,47,88)进行直接插人排序时,当把第7个记录65插人到有序表时,为寻找插人位置需比较__________次。 参考答案:3 19.一棵有5个叶结点的哈夫曼树,该树中总共有________个结点。 参考答案:9 20.设有一棵深度为4的完全二叉树,第四层上有5个结点,该树共有_________ 个结点。(根所在结点为第1层)。 参考答案:12 21.设有一个长度为40的顺序表,要删除第8个元素需移动元素的个数为____. 参考答案:32 22.有以下程序段 char a[] =\"English”; char*p=a; int n=0; while(*p!=‘\\0’) {n++; p++; ) 结果中, n的值是________. 参考答案:7 三、综合题(每小题中每问5分,共30分) 23.有一个长度为11的有序表(1,2,11,15,24,28,30,56,69,70,80),元素的下标依次为1,2,3,……,11,按折半查找对该表进行查找。 (1)画出对上述查找表进行折半查找所对应的判定树。 (2)说出成功查找到元素56,需要依次经过与哪些元素的比较? (3)说出不成功查找元素72,需要进行元素比较的次数? 参考答案: 24.(1)一组记录的关键字序列为(57.90,67,50,51,56),利用堆排序(堆顶元素是最小元素)的方法建立初始堆(要求以完全二叉树描述)。 (2)对关键字序列(56.51,71,54,46,106)利用快速排序,以第一个关键字为分割元素,给出经过一次划分后的结果。 (3)一组记录的关键字序列为(60,47,80,57,39,41,46,30),利用归并排序的方法,分别给出(1,1)归并、(2,2)归并、(4,4)归并的结果序列。 参考答案: 四、程序填空题(每空2分,共16分) 25.设线性表为(16, 20, 26, 24) , 以不带头结点的单向链表存储, 链表头指针为head, 以下程序的功能是输出链表中各结点中的数据域data。 Struct node { int data; struct node*next; }; typedef struct node NODE; #define NULL O void main() { NODE*head,*p; p=head; /*p为工作指针*/ do { printf(“%d\\n”,(1)_______________); (2)______________________; } while((3)______________________) } 参考答案: (1) p->data (2) p=p->next (3) p!=NULL 26.以下函数为直接选择排序算法,对a[1],a[2],…a[n]中的记录进行直接选择排序,完成程序中的空格 typedef struct { int key ; … } NODE; void selsort(NODE a[],int n) { int i,j,k; NODE temp;
Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务