数据结构历年试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试卷代号:1252
中央广播电视大学2012-2013学年度第二学期“开放本科”期末考试
一、单项选择题(每小题2分,共30分)
1.在C语言中,顺序存储长度为3的字符串,需要占用( )个字节。
A.4 B.3 C.6 D.12 2。
串函数StrCat(a,b)的功能是进行串( )。
A.比较 B.复制 C.赋值 D.连接 3.-棵有n个结点采用链式存储的二叉树中,共有( )个指针域为空。
A.n+l B.n C.n-l D.n-2
4.设一棵哈夫曼树共有n个非叶结点,则该树有( )个叶结点。
A.n B.n+l C.n-l D.2n 5.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的值,则执
行( )。
A. x=top->data;top=top->next =top->data
C. top= top->next; x=top->data =top->next;x=data
6.一棵完全二叉树共有5层,且第5层上有六个结点,该树共有( )个结点。
A.30 B.20 C.21 D.23
7.在一个无向图中,所有顶点的度数之和等于边数的( )倍。
^A.O上;.B.3 C. D.2 8.已知如图1所示的一个图,若从顶点V,出发,按深度优先搜索法进行遍历,则可能得
到的一种顶点序列为( )。
9.已知如图2所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则可能得到
的一种顶点序列为( )。
A. abcedf B. abcefd C. aebcfd D. acfdeb
10.对二叉排序树进行( )遍历,可以使遍历所得到的序列是有序序列。
A.按层次 B.后序 C.中序 D.前序
11.在有序表(2,4,7,14,34,43,47,64,75,80,90,97,120)中,用折半查找法查找值80
时,经( )次比较后查找成功。
A.4 B.2 C.3 D.5
12.有一个长度为9的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的
平均比较次数为( )。
A.25/10 B.25/9 C.20/9 D.17/9
13.排序算法中,从未排序序列中依次取出元素与已排序序殂(初始为空)中的元素进行
比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是( )。
A.冒泡 B。
直接插入 C.折半插入 D.选择排序
14.一组记录的关键字序列为(46,79,56,38,40,84),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果为( )。
A.40,38946,79956,84 B.40,38946,56,79,84
C.40,38,46,84,56,79 D.38,40,46956,79,84
15.排序方法中,从尚未排序序列中挑选元素,并将其依次放人已排序序列(初始为空)的
一端的方法,称为( )排序。
A.归并 B.插入 C.快速 D.选择
1.A 2.D3.A 4.B 6.C 7.D 8.A 9.B 11.B 2.B 13.C 14.B
二、填空题(每小题2分。
共20分)
16.在二叉树的链式存储结构中,通常每个结点中设置三个域,它们是(值域) (左指针)(右指针)。
17. 一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为(2i、2i+l)。
18.串的两种最基本的存储方式是(顺序存储)和(链式存储)。
19. -棵有2n-l个结点的二叉树,其每一个非叶结点的度数都为2,则该树共有(n)个叶结点。
20.对于一棵具有n个结点的二叉树,其相应的链式存储结构中共有(n+1)个指针域为空。
21(中序)遍历二叉排序树可得到一个有序序列。
22.图的深度优先搜索和广度优先搜索序列不一定是唯一的。
此断言是(正确)的。
23.二叉树为二叉排序的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。
这种说法是(不正确)的。
(回答正确或不正确)
24.对记录序列排序是指按记录的某个关键字排序,记录序列按(主关键字)排序结果是唯一的。
25.按某关键字对记录序列排序,若(关键字相等的记录)在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。
三、综合题(每小题10分。
共30分)
26.设查找表为(16,15,20,53,64,7),
(1)用冒泡法对该表进行排序(要求升序排列),写出每一趟的排序过程,通常对n个元素进行冒泡排序要进行多少趟冒泡第j趟要进行多少次元素间的比较
(2)在排序后的有序表的基础上,画出对其进行折半查找所对应的判定树。
(要求以数据元素作为树结点)。
27.(1)设有查找表{5,14,2,6,18,7,4,16,3),依次取表中数据,构造一棵二叉排序树。
(2)说明如何由序列的二叉排序树得到相应序列的排序结果。
38.(1)对给定权值2,1,3,3,4,5,构造哈夫曼树(要求每个结点的左子树根结点的权小于等于右子树根结点的权)。
(2)给出各权值的哈夫曼编码。
四、程序填空题【每空2分。
共16分)
30.以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中,左、右指针域分别为1eft 和right ,数据域data 为字符型,BT 指向根结点)。
voidPostorder( structBTreeNode* BT)
{if(BT! =NULL){ (1) [ ] (2) [ ] (3) [ ] } }
试卷代号:1252
中央广播电视大学2012-2013学年度第一学期“开放本科”期末考试
一、单项选择题(每小题2分,共30分)
1.同一种逻辑结构( )。
A.只能有唯一的存储结构 B.可以有不同的存储结构
C.只能表示某一种数据元素之间的关系 n以上三种说法均不正确
2.链表所具备的特点是( )。
A可以随机访问任一结点 B占用连续的存储空间
C插入删除元素的操作不需要移动元素结点D可以通过下标对链表进行直接访问
3.数据的物理结构( )。
A与数据的逻辑结构无关 B仅仅包括数据元素的表示
C只包括数据元素间关系的表示 n包括数据元素的表示和关系的表示
4.线性结构中数据元素的位置之间存在( )的关系。
A-对一 B一对多 C多对多 D.每一个元素都有一个直接前驱和一个直接后继
14.设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主存储到
一维数组B中(数组下标从1开始),则矩阵中元素氏。
在一维数组B中的下标是.( )。
A.33 B.32 C.85 D.41
15.在一个无向图中,所有顶点的度数之和等于边数的( )倍。
A3 &2.5 C D.2
1.B 2.C 3.D 4.A 5.D6.C 7.B 8.C 9.A 10.C 11.A 12.B 13.C 14.A 15.D
二、填空题(每小题2分,共24分)
16.栈和队列的操作特点分别是(后进先出)和(先进先出)。
17.结构中的数据元素存在多对多的关系称为(网状)结构。
18.根据数据元素间关系的不同特性,通常可分为集合、线性、(树形)、(图形)、四类基本结构。
19.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数和算法的时间复杂度分别为(n-1)和(O(n))。
20.在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行(s->next=s)和(p->next=s)的操作。
21.在二叉树的链式存储结构中,通常每个结点中设置三个域,它们是值域、(左指针)、(右指针)。
22.一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左右孩子的编号分别为(2i)、(2i+1)23.向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行 (s->next=h);和(n=s)。
24.在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为(r->next=s)和r=s;(结点的指针域为next)。
25.设有一棵深度为4的完全二叉树,第四层上有5个结点,该树共有(12)个结点。
(根所在结点为第1层)
26.对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包括该元素的(行下标)、(列下标)和非零元素值三项信息。
27.在对一组记录(55,39,97,22,16,73,65,47,88)进行直接插入排序时,当把第7个记录65插入到有序表时,为寻找插入位置,需比较(3)次。
三、综合题(每小题10分,共30分)
28.(1)以2,3,4,7,8,9作为叶结点的权,构造一棵哈夫曼树(要求每个结点的左子树根结点的权小于等于右子树根结点的权),给出相应权重值叶结点的哈夫曼编码。
(2)-棵哈夫曼树有n个叶结点,它一共有多少个结点简述理由。
29.一组记录的关键字序列为(46,79,56,38,40,84)
(1)利用快速排序的方法,给出以第一个记录为基准得到的一次划分结果(给出逐次交换元素的过程,要求以升序排列)。
(2)对上述序列用堆排序的方法建立大根堆,要求以二叉树逐次描述建堆过程。
30.设查找表为(50,60,75,85,96,98,105,110,120,130)
(1)说出进行折半查找成功查找到元素120需要进行多少次元素间的比较
(2)为了折半查找元素95,经过多少次元素间的比较才能确定不能查到
(3)画出对上述有序表进行折半查找所对应的判定树(要求以数据元素作为树结点)。
四、程序填空题(每空2分,共16分)
试卷代号:1252
中央广播电视大学2008--2009学年度第一学期“开放本科”期末考试一、单项选择题(每小题2分。
共30分)
1.链表所具备的特点是( )。
A.可以随机访问任一结点B.占用连续的存储空间
C.插入删除元素的操作不需要移动元素结点 D.可以通过下标对链表进行直接访问
2.线性结构中数据元素的位置之间存在( )的关系。
A.一对一B.一对多
C.多对多
D。
每一个元素都有一个直接前驱和一个直接后继
3.算法的时间复杂度与( )有关。
7
A.所使用的计算机 B.与计算机的操作系统
C.与算法本身 D.与数据结构
4.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是P所指结点的直接后继,现要删除q所指结点,可用的语句是( )。
A.p=q->next B.p->next=q
C.p->next=q->next D.q->next=NULL
5.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为( )。
A.r=f->next:
B.r=r->next:
C.f=f一>next;
D.f=r一>next:
6.元素3,6,9按顺序依次进栈,则该栈的不可能输出序列是( )(进栈出栈可以交替进行)。
A.9,6,3
B.9,3,6
C.6,3,9
D.3,9,6
7.设有一个l0阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主存储到一维数组8中(数组下标从1开始),则矩阵中元素氏,。
在一维数组B中的下标是(. )。
A.33 B.32
C.85 D.41
8.在C语言中,顺序存储长度为3的字符串,需要占用( )个字节。
A.4 B.3
C.6 D.12
9.一棵有n个结点采用链式存储的二叉树中,共有( )个指针域为空。
A.n+1 B.n
C.n一1 D.n--2
10.设一棵哈夫曼树共有n个叶结点,则该树有( )个非叶结点。
A.n—l B.n
C.n+1 D.2n
11.在一个无向图中,所有顶点的度数之和等于边数的( )倍。
A.3 B.2.5
C.1.5 D.2
12.已知如图1所示的一个图,若从顶点V。
出发,按广度优先进行遍历,则可能得到的一种顶点序列为( )。
13.在有序表{2,4,7,14,34,43,47,64,75,80,90,97,120)中,用折半查找法查找值80时,经( )次比较后查找成功。
A.4 B.2
C.3 D.5
14.排序算法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是( )。
A.冒泡
B.直接插入
C.折半插人
D.选择排序
15.排序方法中,从尚未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的
方法,称为( )排序。
A.归并 B.插入
C.快速 D.选择
二、填空题(每小题2分。
共24分)
1·结构中的数据元素存在多对多的关系称为——结构。
2.要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的
次数和算法的时间复杂度分别为---------和---------
3·设有一个头指针为head的单向循环链表,p指向链表中的结点,若p一>next= =
——,则P所指结点为尾结点。
4·向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行s一>next=h;和---------
5·在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为------
和r=s;(结点的指针域为next)
6.设有n阶对称矩阵A,用数组s进行压缩存储,当i<j时,A的数组元素a ij相应于数组
s的数组元素的下标为-----------。
(数组元素的下标从l弃始)
7·一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为---------,---------
8·一棵有2n--1个结点的二叉树,其每一个非叶结点的度数都为2,则该树共有-------
个叶结点。
9.—-----—遍历二叉排序树可得到一个有序序列。
10.如图2所示的二叉树,其前序遍历序列为---------
11二叉树为二叉排序的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右
孩子的值。
这种说法是——的。
(回答正确或不正确) 一“
12.按某关键字对记录序列排序,若——一———在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。
三、综合题(每小题10分。
共30分)
1.一组记录的关键字序列为(46.79,56,38,40,84)
(1)利用快速排序的方法,给出以第一个记录为基准得到的一次划分结果。
(给出逐次交
换元素的过程,要求以升序排列)
(2)对上述序列用堆排序的方法建立大根堆,要求以二叉树逐次描述建堆过程。
2.设查找表为(16,15,20,53,64,7)
(1)用冒泡法对该表进行排序(要求升序排列),要求写出每一趟的排序过程,通常对n个元素进行冒泡排序要进行多少趟冒泡第j趟要进行多少次元素间的比较
(2)在排序后的有序表的基础上,画出对其进行折半查找所对应的判定树。
(要求以数据
元素作为树结点)
(3)求在等概率条件下,对上述有序表成功查找的平均查找长度。
3.(1)“一棵二叉树若它的根结点的值大于左子树所有结点的值,小于右子树所有结点的值,则该树一定是二叉排序树”。
该说法是否正确,若认为正确,则回答正确,若认为不正确则说明理由
(2)设有查找表(7,16,4,8,20,9,6,18,5),依次取表中数据构造一棵二叉排序树。
对上述二叉树给出后序遍历的结果。
四、程序填空题(每空2分。
共16分)
1.以下是用头插法建立带头结点且有n个结点的单向链表的程序,要求结点中的数据域从前向后依次为n,n--1,……,l,完成程序中空格部分。
NODE*create2(n)
{NODE*head,*P,*q;
int i;
D=(NODE*)malloc(sizeof(NODE));
P一>next=NULL;
head=(1)——;
(2)——;
for(i=1;i<=n;i++)
{P 2(3)———————————————;
p一>data=i;
if(i= =1)
p->next=NULL;
else
p->next2(4)——;
q一>next2(5)——;
}
return(head);
}
2.以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中,左、右指针域分别为left和right,数据域data为字符型;BT指向根结点)。
void Postorder(struct BTreeNode*BT)
{if(BT!=NULL){ ·
(1)---------------------------------;
(2)---------------------------------;
(3)--------------------------------;
试卷代号:1252
中央广播电视大学2008--2009学年度第一学期“开放本科"期末考试数据结构(本) 试题答案及评分标准
(供参考)
一、单项选择题(每小题2分,共30分)
1.C 2.A 3.C 4.C 5.C
6.B 7.A 8.A 9.A l0.A
11.D l2.C l3.A l4.C l5.D
二、填空题(每小题2分。
共24分) ’
1-图状 (网状) ‘
2.n一1,0(n)
3.head
4.H=s;
5.r一>next=S;
6.i(i一1)/2+j
7.2i和2i+1
8.n
9.中序
10.abdefeg
11.不正确
12.关键字相等的记录
三、综合题(每小题10分。
共30分)
1.(1)初始序列46,79,56,38,40,84
40,79,56,38,回,84
40,回,56,38,79,84
40,38,56,围,79,84 .
40,38,回,56,79,84
40,38,46,56,79,84 ,
(2)
2.(1)原序列16 15 20 53 64 7
15 16 20 53 7 64 n一1耥
15 16 20 7 53 64 n—j次
15 16 7 20 53 64
15 7 16 20 53 64
7 15 16 20 53 64
(2)
(3)平均查找长度一(1*1+2*2+3*3)/6—14/6
3.(1)不正确,二叉排序树要求其子树也是二又排序树。
(2) ·
后续遍历5,6,4,9,8,18,20,16,7
四、程序填空题(每空2分。
共16分)
1.(1)P
(2)q=P
(3)(NODE*)malloc(sizeof(NODE))
(4)q->next
(5)p
2.(1)Postorder(BT一>left)
(2)Postorder(BT一>right)
(3)printf(“c”,BT一>data)
试卷代号:1010
中央广播电视大学2007--2008学年度第一学期“开放本科"期末考试计算机专业数据结构试题
2008年1月
一、单项选择题。
在括号内填写所选择的标号(每小题2分。
共l8分) 1.下面程序段的时间复杂度为( )。
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)a[i][j]=i*j;
A.O(m2) B.O(n2)
C.O(m*n) D.0(m+n)
2.在二维数组中,每个数组元素同时处于( )个向量中。
A.0 B.1
C.2 D.n
3.设有两个串t和P,求P在t中首次出现的位置的运算叫做( )。
A.求子串 B.模式匹配
C.串替换 D.串连接
4.利用双向链表作线性表的存储结构的优点是( )。
A.便于单向进行插入和删除的操作
B.便于双向进行插入和删除的操作
C.节省空间
D.便于销毁结构释放空问
5.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。
若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行( )操作。
A.top一>link=S;
B.s一>link=top一>link;top一>link=S;
C.S-->link=top;top—S;
D.s一>link=top;top—top一>link;
6.一棵具有35个结点的完全二叉树的高度为( )。
假定空树的高度为一l。
A.5 B.6
C.7 D.8
7.向具有n个结点的堆中插入一个新元素的时间复杂度为( )。
A.O(1) B.0(n)
C.O(log2n)D.O(nlog2n)
8.在一棵AVL树中,每个结点的平衡因子的取值范围是( )。
A.一l~1 B.一2~2
C.1~2 D.O~1
9.一个有n个顶点和n条边的无向图一定是( )的。
A.连通 B.不连通
C.无回路 D.有回路
有回路
二、填空题,在横线处填写合适的内容(每小题2分,共l4分)
1.数据结构包括()、存储结构和对数据的运算这三个方面。
2.一维数组所占用的空间是连续的。
但数组元素不一定顺序存取,通常是按元素的()存取的。
3.将一个n阶对称矩阵的上三角部分或下三角部分压缩存放于一个一维数组中,则该一
维数组需要至少具有()个元素。
4.对于一棵具有n个结点的树,该树中所有结点的度数之和为()。
5.在一棵高度为3的理想平衡二叉树中,最少含有()个结点,假定树根结点的高度为0。
6.假定对长度n=50的有序表进行折半搜索,则对应的判定树中最底层的结点数为()个。
7.用邻接矩阵存储图,占用的存储空间与图中的() 数有关。
三、判断题。
在每小题前面打对号表示正确或打叉号表示错误(每小题2分。
共14分)
( )1.算法和程序都应具有下面一些特征:有输入,有输出,确定性,有穷性,有效性。
( )2.用字符数组存储长度为n的字符串,数组长度至少为n+1。
( )3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。
( )4.邻接矩阵适用于稀疏图的表示,邻接表适用于稠密图的表示。
( )5.对一个无向连通图进行一次深度优先搜索遍历时可以访问到图中的所有顶点。
( )6.在索引顺序结构的搜索中,对索引表只可以采取顺序搜索,不可以采用折半搜索。
( )7.图中各个顶点的编号是人为的,不是它本身固有的,因此可以根据需要进行改变。
四、运算题(每小题6分,共30分)
1.假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行中序、后序、按层遍历的结果。
中序:后序:按层:
2.一个一维数组all2]中存储着有序表(15,26,34,39,45,56,58,63,74,76,80,86),根据折半搜索所对应的判定树,写出该判定树中度为1的结点个数,并求出在等概率情况下进行成功搜索时的平均搜索长度。
度为l的结点个数:平均搜索长度:
3.假定一个线性序列为(38,42,55,15,23,44,30,74,48,26),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树中左子树为空的所有单支结点、右子树为空的所有单支结点和所有叶子结点,请按照结点值从小到大的次序写出。
左子树为空的所有单支结点:
右子树为空的所有单支结点:
所有叶子结点:
4.已知一个图的顶点集V和边集G分别为:V={1,2,3,4,5,6};
E={<1,2>,<1,3>,<2,4>,<2,5>,<3,4>,<4,5>,<4,6>,<5,1>,
<5,3>,<6,5>};
假定该图采用邻接表表示,每个顶点邻接表中的边结点都是按照终点序号从小到大的次
序链接的,试写出:
(1)从顶点l出发进行深度优先搜索所得到的顶点序列;(2)9,N点1出发进行广度优先搜索所得到的顶点序列。
(1):
(2):
5.已知一个数据序列为{16,45,27,23,41,15,56,64},请把它调整为一个最大堆。
最大堆:五、算法分析题(每小题6分。
共12分)
1·下面算法的功能为:将两个有序单链表合并成一个有序单链表并返回其表头指针。
阅
读算法,在划有横线的上面填写合适的内容。
ListNode*Mergel(ListNode*.& pl,ListNode*&p2)
{
ListNode*p=new ListNode,*f=p;
while(p1!=NULL && p2!=NULL)
{
if(pl-->data<=p2-->data){
p-->link=pl; ;
}
else{p->link=p2;p2=p2一>link;}
}
if(pl!=NULL)p-->link=pl;else p~>1ink=p2;
pl==p2==NULL;
return f一>link:
2.已知二叉树中的结点类型BinTreeNode定义为:
struct BinTreeNode{ElemType data;BinTreeNode*left, *right;};
其中data为结点值域,left和right分别为指向左、右子女结点的指针域。
根据下面算法的定义指出其功能。
算法中参数BT指向一棵二叉树。
BinTreeNode*BTreeSwopX(BinTreeNode*BT)
{
if(BT= =NULL)return NULL;
else{
BinTreeNode*pt=new BinTreeNode;
pt一>data—BT一>data;
pt一>right—BTreeSwopX(BT一>left);
pt一>left=BTreeSwopX(BT-->right);
return pt;
}
}
算法功能:
六、算法设计题(每小题6分,共12分)
1.已知f为单链表的表头指针,单链表中的结点结构为(data,link),并假定每个结点的值均为大于0的整数。
根据下面函数声明写出递归算法,返回单链表中所有结点的最大值,若单链表为空则返回数值0。
int Max(LinkNode*f);
2.设Q是一个由其队尾指针和队列长度标识的循环队列,按照下面队列定义和函数声明
写出从此队列中删除一个元素的算法。
//循环队列定义
struct CyclicQueue
{
ElemType elemEM];//M为已定义过的整型常量
int rear;//rear指向队尾元素的后一个位置
int length://length指示队列中元素个数
}5
//若队列非空则删除队头元素并由引用参数x带回,同时返回true;否则若队列为空则返回
false。
bool DelCQueue(CyclicQueue Q,ElemType&x);
试卷代号:1010
中央广播电视大学2007—2008学年度第一学期“开放本科’’期末考试
计算机专业数据结构试题答案及评分标准
(供参考)
2008年1月
一、单项选择题,翟括号内填写所选择的标号(每小题2分,共18分)
1.C 2.C 3.B 4.B 5.C6.A 7.C 8.A 9.b
二、填空题。
在横线处填写合适内容(每小题2分,共14分)
1.逻辑结构 2.下标(或顺序号) 3.n(n+1)/2 4.n一1 5.8 6.19 7.顶点
三、判断题,在每小题前面打对号表示正确或打叉号表示错误(毒小题2分。
共14分)
1.错 2.对 3.对 4.错
5.对 6.错 7.对7.对
四、运算题(每小题6分,共30分)
1.中序:C,b,a,e,d,f
后序:C,b,e,f,d,a
按层:a,b,d,C,e,f
2.度为1的结点个数:5
平均搜索长度:37/12
3.左子树为空的所有单支结点:l5,23,42,44
右子树为空的所有单支结点:30
所有叶子结点:26,48,74
4.(I)1,2,4,5,3,6 //3分
(2)1,2,3,4,5,6 //3分
5.最大堆:{64,45,56,23,41,15,27,16}
五、算法分析题(每小题6分。
共12分)
1.pl2p1一>link、p=p一>link //每空3分
2.生成一棵新二叉树并返回树根指针,该二叉树是已知二叉树BT中所有结点的左、右
子树(或左、右孩子的值)交换的结果。
六、算法设计题(每小题6分。
共12分)
1.评分标准:按注释酌情给分。
int Max(LinkNode*f)
{
if(f= =NULL)return 0:
if(f一>link= =NULL)return f一>data;
int temp=Max(f-->link);
if(f一>data>temp)return f一>data;
else return temp;
}
2.评分标准:按注释酌情给分:
bool DelCQueue(CyelieQueue Q,ElemType&x)
{
if(Q.1ength= =O)return false;
x—Q.elem[(Q.rear—Q.1ength-t-M)%M];
Q.1ength一一;
return true;
}
试卷代号:1010
中央广播电视大学2006--2007学年度第二学期“开放本科"期末考试
计算机专业数据结构试题
2007年7月
一、单项选择题。
在括号内填写所选择的标号(每小题2分。
共18分)
1.若需要利用形参直接访问实参,则应把形参变量说明为( )参数。
A.指针 B.引用
C.传值 D.常值
2.在二维数组中,每个数组元素同时处于( )个向量中。
A.O B.1
C.2 D.n
3.已知单链表A长度为m,单链表8长度为n,它们分别由表头指针所指向,若将B整体连接到A的末尾,其时间复杂度应为( )。
A.O(1) B.O(m)
C.O(n) D.O(m十n)
4.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为
( ) A.iront= =rear B.front!=NULL
C.rear! = NULL D.front= =NULL
5.若让元素l,2,3依次进栈,则出栈次序不可能出现( )种情况。
A.3,2,1 B.2,1,3
C.3,1,2 D.1,3,2
6.在一棵高度为5(假定树根结点的高度为0)的完全二叉树中,所含结点个数至少等于( ) A.16 B.64
C.31 D.32
7.向具有n个结点的二叉搜索树中插入一个结点的时间复杂度大致为( )。
A.O(1) B.O(1og2n)
C.O(n) D.O(nlog2n)
8.具有n个顶点的有向图最多可包含有( )条有向边。
A.n—1 B.n
C.n(n一1)/2 D.n(n一1)
9.图的广度优先搜索类似于树的( )遍历。
A.先根B.中根
C.后根D.层次
二、填空题。
在横线处填写合适的内容(每小题2分,共14分)
1.链表只适用于( )查找。
2.设双向循环链表中每个结点的结构为(data,llink,rlink),则结点*P的前驱结点的地
址为( )。
3.在一个链式队列中,若队头指针与队尾指针的值相同,则表示该队列至多有( )个结点。
4.假定一棵树的广义表表示为a(b,c,d(e,f),g(h)),则结点f的层数为( )。
假定树根结点的层数为0。
5.从一棵二叉搜索树中搜索一个元素时,若给定值大于根结点的值,则需要向根的( ) 继续搜索。
6.每次从第i至第n个元素中顺序挑选出一个最小元素,把它交换到第i个位置,此种排
序方法叫做( )排序。
7.快速排序在最坏情况下的时间复杂度为( )。
三、判断题,在每小题前面打对号表示正确或打叉号表示错误(每小题2分。
共14分)
( )1.数据的逻辑结构与数据元素本身的内容和形式无关。
( )2.使用三元组表示稀疏矩阵中的非零元素能节省存储空间。
( )3.在一棵二叉树中,假定每个结点只有左子女,没有右子女,则对它分别进行前序遍历和按层遍历时具有相同的结果。
( )4.能够在链接存储的有序表上进行折半搜索,其时间复杂度与在顺序存储的有序表上
相同。
( )5.邻接表表示只能用于有向图的存储,邻接矩阵对于有向图和无向图的存储都适用。
( )6.在索引顺序结构上实施分块搜索,在等概率情况下,其平均搜索长度不仅与子表个数有关,而且与每一个子表中的对象个数有关。
( )7.向一棵8树插入关键码的过程中,若最终引起树根结点的分裂,则新树比原树的高
度减少1。
四、运算题(每小题6分。
共30分)
1.假定一棵二叉树广义表表示为a(b(c(,g)),d(e,f)),分别写出对它进行先序、中序和后序遍历的结果。
先序:
中序:
后序:
2.有7个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶子结点生成一棵霍夫曼树,求出该树的带权路径长度。
带权路径长度:
3.已知图G=(V,E),其中
V={a,b,c,d,e},
E={<a,b>,<b,a>,<c,b>,<c,d>,<d,e>,<e,a>,<e,c>}
在该图的邻接表表示中,每个顶点单链表各有多少个边结点。
顶点: a b c d e
边结点数:
4.已知一个AOV网的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7};
E={<0,2>,<1,3>,<1,4>,<2,4>,<2,5>,<3,6>,<3,7>,<4,7>,
<5,7>,<6,7>};
若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次。