当前位置:文档之家› 华工平时作业数据结构第一次作业

华工平时作业数据结构第一次作业

1判断题
(对)1. 数据的逻辑结构与数据元素本身的内容和形式无关。

(错)2. 线性表的逻辑顺序与物理顺序总是一致的。

(对)3. 若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。

(错)4. 对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。

(对)5. 最优二叉搜索树的任何子树都是最优二叉搜索树。

(对)6. 在二叉搜索树上插入新结点时,不必移动其它结点,仅需改动某个结点的指针,使它由空变为非空即可。

(对)7. 有n(n≥1)个顶点的有向强连通图最少有n条边。

(错)8. 连通分量是无向图中的极小连通子图。

(错)9. 二叉树中任何一个结点的度都是2。

(错)10. 单链表从任何一个结点出发,都能访问到所有结点。

二、单选题
1 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( B )个元素。

A.8 B. 63.5 C. 63 D. 7
2 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[3][3]在( A )位置,(10)表明用10进数表示。

A.692(10) B. 626(10) C. 709(10) D. 724(10)
3 N个顶点的连通图至少有( A )条边。

A.N-1 B. N C. N+1 D. 0
4 下面程序的时间复杂度为( C )。

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. O(m+n)
5 设单链表中结点的结构为(data, link)。

已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作( B )。

A.s->link=p->link; p->link =s; B. q->link=s; s->link =p;
C. p->link=s->link; s->link =q;
D. p->link=s; s->link =q;
6栈的插入和删除操作在( A )进行。

A.栈顶 B. 栈底 C. 任意位置 D. 指定位置
7 若让元素1,2,3依次进栈,则出栈次序不可能出现哪种情况( C )。

A.3,2,1 B. 2,1,3 C. 3,1,2 D. 1,3,2
8 广义表A(a),则表尾为( C )。

A.a B. (()) C. 空表 D. (a)
9 采用邻接表存储的图的深度优先遍历算法类似于二叉树的( B )。

A.中序遍历 B. 前序遍历 C. 后序遍历 D. 按层次遍历
10 每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做( B )排序。

A.插入 B. 选择 C. 交换 D. 外排序
三、填空题
1. 算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。

它应具有输入、输
出、___确定性____________、有穷性和可执行性等特性。

2. 当问题的规模n趋向无穷大时,算法执行时间T(n)的数量级被称为算法的____时间复杂度__
_ ___。

3. 在一棵度为3的树中,度为2的结点个数是1,度为0的结点个数是6,则度为3的结点个数是
____2_______。

4. 当用长度为n的数组顺序存储一个栈时,若用top==n表示栈空,则表示栈满的条件为
______top=0______________。

5. 对序列(49,38,65,97,76,27,13,50)采用快速排序法进行排序,以序列的第一个元素为基准
元素得到的划分结果是_【13 27 38】_45【50 65 76 97】______________ _______。

6. 对于一棵具有n个结点的树,该树中所有结点的度数之和为____n-1_______________。

7. 请指出在顺序表{5、11、23、35、51、64、72、85、88、90、98}中,用折半查找关键码30
需做___5___________次关键码比较。

8. 若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则
第12个元素的存储地址是_________144_________。

9. 在一个长度为n 的顺序表中,向第i个元素(1≤ i≤ n+1)之前插入一个新元素时,需要
向后移动__n-i+1__________个元素。

10. 设有两个串p和q,求q在p中首次出现的位置的运算称作__模式匹配___________。

四、程序阅读填空
1. 在顺序表中第 i 个位置插入新元素 x
template <class Type> int SeqList<Type>::Insert (Type & x, int i){
if (i<0||i>last+1||last==MaxSize-1) return 0; //插入不成功
else {
last++;
for( ___int j=last_____________________;j>i;j--)
_____data[j]=data[j-1]_____________________;
data[i] = x;
return 1; //插入成功
}
}
2.直接选择排序的算法
template <class Type> void SelectSort(datalist<Type> & list)
{ for(int i=0; i<list.CurrentSize-1; i++) ________________________; }
template <class Type> viod SelectExchange(datalist<Type> & list, const int i){ int k = i;
for(int j=i+1;j< list.CurrentSize;j++)
if(list.Vector[j].getKey()<list.Vector[k].getKey())
___ _k=j_________________;//当前具有最小关键码的对象
if(k!=i) Swap(list.Vector[i], list.Vector[k]); //交换
}
五、简答题
1. 线性表可用顺序表或是链表存储,此两种存储表示各有哪些优缺点?
答:线性表可用顺序表或是链表存储,此两种存储表不各有哪些优缺点2
客:顺序存请表示是将数据元条存放于1个连续的在任全国中,实现顺序存取或(按下标存取。

它的行所效率高,行取速度关。

自它的3的大公经定义,在程序整个运行期回不生改变,因此,不易打充。

同时,由于在托入或别除时,为保持克有次序(没有规定元素进序),均而要移动半或近州半)元系,修改效平不占。

2. 设有一个输入数据的序列是{46,25,78, 62, 12, 37, 70, 29},试画出从空树起,逐个输入
各个数据而生成的二叉搜索树。

答: 46
/ /
25 78
/ /
12 37 62
/ /
29 70。

相关主题