数据结构练习题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构练习题
说明:除题中另有说明外,本书均采用下面的存储结构及操作
二叉链表的C语言存储描述如下单向链表的存储
typedef struct BiTNode typedef struct LNode
{char data;//元素信息{ElemType data;
struct BiTNode *lchild,rchild;struct LNode *next;
18、从本质上而言,森林的孩子兄弟链表与它转换所对应的二叉树的_____存储结构一致。
19、n个顶点的无向、有向完全图的边数分别是_____、_____,n个顶点的强连通图至少有_____条边。
20、无向网的最小生成树的构造算法是_____和_____;n个顶点的无向网构造的最小生成树中边的条数为_____。
14、83个结点的完全二叉树高度为_____,其中叶子个数为_____,一度结点个数为_____。
15、n(n>0)个结点的完全二叉树叶子个数为_____,一度结点个数为_____。
16、高度为5的BST树结点总数至多,至少为_____,_____。
17、n个叶子的哈夫曼树最高高度为_____,结点总数为_____。
typedef struct Vnode{ //头结点InitQueue(Q)
char data;//元素信息QueueEmpty(Q)
ARC *first;Enqueue(Q,x)
}Graph[N];//N为顶点的实际个数DelQueue(Q,x)
一、判断正误
1、线性表采用链式存储,则链表中结点总数一定等于元素总数。
{LinkList p,q,r;int m;
r=L;p=L->next;
if (p)
{m=p->data;
________;
p=p->next;
while(p)
{if (_________){___________;m=p->data;}
__________;
p=p->next;
}
q=r->next;
{p=DELQ(Q);
if(p->lchild)__________;
if(p->rchild)__________;
q=________;
p->rchild=_________;
________=q;
}
}
}
4、将带头结点的单链表中所有的奇数放在链表的前面,偶数放在后面。
16、分别画出关键字序列(34,23,56,32,27,30,58,89,56)构造的BST树、AVL树的逻辑结构,并分别计算等概率成功查找条件下的ASL值;设a1、a2、a3是不同的关键字且a1<a2<a3,可组成6中不同的输入序列,问哪几种输入所构造的二叉排序树的高度为3?
17、画出对13个有序关键字进行折半查找的折半查找树。
int xyx(LinkList L)
{LinkList p,q;
int n,n1,i,x;
p=L->next;q=p;n=0;
while (q)
{n++;q=q->next;}
n1=__________;
for(i=1;i<=n1;i++){PUSH(S,p->data);__________;}
2、栈是一种后进先出的线性表,因此,元素的进栈序列和出栈序列不可能相同。
3、无论采用何种存储结构,队列的入队、出队次序一定相同。
4、由三个不同关键字构造的二叉排序树的基本形态共有五种。
5、若非空二叉树的先序、中序遍历序列相同,则必为仅有一个根的二叉树。
6、二叉链表存储的二叉树中结点总数为n,则空指针域总数必为n+1。
18、已知散列函数为除余法(余数为7),关键字序列为(49,10,16,40,79,28,18,83),分别采用下列冲突处理方法构造散列表,并计算等概率成功查找条件下的ASL值。
1)链地址法2)线性探测法(表长为11);3)二次探测再散列法(表长为25)。
19、已知关键字序列为(34,17,56,32,45,50,89,19,20,41),分别写出以下各排序方法每趟排序的结果,并指出它们的稳定性。1)直接插入2)二路归并3)快速4)堆排序5)冒泡6)简单选择7)基数8)希尔。
7、n(>0)个权值作为叶子构造的哈夫曼树中结点总数为2n-1。
8、森林的后序遍历与它对应的二叉树的中序遍历相同。
9、折半查找的平均查找效率高于顺序查找,因此,查找某一元素时,折半查找所需与关键字的比较次数一定少于顺序查找。
10、二叉排序树的中序遍历序列按关键字递增有序。
11、有向图的邻接表的第i个链表中表结点总数为该顶点的度。
2、简述顺序表、链表的各自特点。
3、简述链式存储中头结点、头指针;结点、元素的区别。
4、n阶矩阵Aij(1≤i,j≤n)或Aij(0≤i,j≤n-1)的上三角(不含对角线)为常数C,下三角无规律,设计压缩存储方案。
5、画出广义表A=((a,(b),c),(d),(e,f))的链式存储结构。
6、画出由三个结点构造的二叉树的基本形态。
10、已知二叉树的先序,中序遍历序列分别为EFHBDGAC,FHDBEAGC,画出二叉树的逻辑结构,顺序存储结构和中序线索二叉树的逻辑结构图示。
11、已知某二叉树由八个字符A--H组成,先序,中序,后序遍历序列分别为___AC___E___GH;C___DB___GHF;___DA___FEB,画出二叉树的逻辑结构和后序线索二叉树的存储结构。提示:每个空白处至少缺少一个字符。
21、构造散列表要解决的两个问题是_____;若将关键字序列的散列地址定位在100至110之间,则散列函数可表示为H(key)=_____。
22、从理论上讲,散列查找的算法效率为_____,但实际应用时,常常因为_____使查找速度有所降低。
23、若关键字序列为正序,则直接插入、冒泡、简单选择、归并、快速、堆排序中排序效率最高的是_____和_____,此时时间复杂度为__________。
7、已知一棵度为5的树中1度,2度,...,5度结点的个数依次为1,2,...,5,则叶子个数为多少?
8、证明任意一棵二叉树中叶子数等于两度结点数加1。
9、已知字符A,B,...,G的权值依次为(5,7,8,10,9,20,30),设计各个字符的Huffman编码,画出Huffman树的存储结构,并计算WPL值。
12、已知森林的逻辑结构如图1所示,画出它的孩子兄弟链表存储结构及其转换的二叉树的逻辑结构。
13、已知无向网如图2所示,画出根据PRIM算法构造的最小生成树步骤图示。
14、画出图3所示无向图的邻接表,以它为基础写出深度、广度优先遍历序列及画出深度、广度优先生成树(从结点A开始)。
15、画出图4所示有向图的邻接矩阵,邻接表,并以该邻接表为基础,写出它的深度、广度优先遍历序列、拓扑排序序列(其中拓扑排序要求标示出入度为0的顶点进栈、出栈的先后次序)。
9、若三个元素ABC的进栈次序为ABC,则借助栈一共可以得到______中出栈序列?
10、已知顺序存储的循环队列中,f,r分别为队头、队尾指针,MAX为队列中存储单元的最大个数。若当队列中仅有一个空闲单元时视为队满,则队空、队满条件分别为_____、_____;一般情况下,队列中元素个数可表示为_____。
}BiTNode,*BiTree;}LNode,*LinkList;
邻接表的C语言存储描述如下基本操作如下
typedef struct Arc InitStack(S)
{int adj;//顶点序号StackEmpty(S)
struct Arc *next;Push(S,e)
}ArcNode,*ARC;//表结点Pop(S,e)
6、在表长为n的顺序表中插入、删除元素时,在等概率条件下平均移动元素的次数分别为_____、_____,具体移动的元素个数与_____有关。
7、已知L为头指针的带头结点的单循环链表(指针域为next),a.若R为尾指针,则满足的条件为______,b.若该表为空表,则满足的条件是______。
8、已知五个元素ABCDE的进栈次序为ABCDE,a.若C为第一个出栈元素,则下一个出栈的元素可能是_____;b.能否得到出栈序列CDBEA______、CEDAB______?
0 3 0 0
A= 0 0 0 5行列下标i,j满足:1≤i,j≤4
0 5 0
1)若将矩阵的下三角元素Aij压缩存储到数组S[k]中:求出k与i,j的关系。
1
0
3
0
0
0
2
0
5
0
下标1 2 3 4 5 6 7 8 9 10
2)若将视为稀疏矩阵,画出三元组表。
四、算法填空
判断带头结点的单向链表中结点数据值(整型)是否对称的算法如下,对称返回1,否则返回0。PUSH(S,x),POP(S,x)分别代表为进栈,出栈函数
24、希尔排序每趟的排序方法是_____,平均时间复杂度为_________;快速排序的平均时间复杂度为_______,最坏时间复杂度为________。
25、排序时所需与关键字的比较次数仅与元素个数有关而与关键字的初始序列无关的排序方法是_____,若关键字个数为n个,则第一趟的比较次数为_____。
20、解释下列概念:
头指针,头结点,数据结构,Huffman树,BST树,AVL树,不稳定排序,散列表。
21、用C语言描述下列存储结构:双向链表,循环队列,二叉链表,线索链表,邻接表。
22、已知关键字序列{52,41,95,21,14,28,82,29},画出构造的3阶B-树。
23、对称矩阵
1 0 0 2
数据结构的抽象数据类型ADT是指一个数学模型及定义在该模型上的一组Βιβλιοθήκη Baidu作。它可用三元组(D,S,P)表示,其中D是数据对象,S是_____,P是_____
设计一个好的算法应达到的目标是正确性、_____、_____和高效率低存储量。算法时间效率、空间效率的度量分别称为_____、_____。
5、顺序表、链表分别通过_____、_____体现元素的前驱、后继的逻辑关系。
11、广义表A=((a,(b),c),(d),(e,f,g))的表长为_____,深度为_____,利用取表头、表尾运算表示原子e的表达式为_____。
12、广义表中元素既可以是单原子,也可以是_____,广义表的两个基本操作是_____和_____。
13、10个结点二叉树至多有_____个叶子,最低高度为_____。
26、写出三种不稳定的排序方法的名称_____、_____和_____。
27、n个元素进行起泡排序时,最好情况下只需进行_____次比较和____次交换,最坏情况需进行_____次比较和_____次交换。
三、综合题
1、已知线性链表中结点的数据域、指针域依次为data、next,写出在表中删除*p结点的语句(设该结点存在后继)及*p结点前插入*s结点语句。
18、对称矩阵压缩存储后不具备随机存取的特点。
19、在考虑存储结构的前提下,有向图的拓扑排序序列一定唯一。
20、折半查找要求元素必须按关键字有序,且只能采用顺序存储结构。
二、填空题
数据的基本单位是_____,数据结构常见的逻辑结构有_____,存储结构有____。
数据结构的逻辑结构可视为一个二元组Data_Structure=(D,S),其中D是_____,S是_____。
___________
free(q);
}
}
3、将二叉树bt的各个结点左右子树互换算法,ADDQ(Q,bt),DELQ(Q),EMPTY(Q)分别代表入队、出队、判队空函数(10分)
void EXCHANGE(BiTree &bt)
{Tree p,q;
if (bt)
{ADDQ(Q,bt);
while(!EMPTY(Q))
if(________) p=p->next;
while(p){
POP(S,x);
if(p->data!=x)break;
p=p->next;
}
if(________)return(1);else return(0);
}
2、删除L单链表中最大元素结点的算法。
void delmax(LinkList &L)
12、顺序表,链表,二叉链表,邻接表,散列表均为存储结构。
13、选取散列函数时,冲突越少越好。
14、冒泡,直接插入,归并,基数排序均为稳定排序。
15、快速排序最坏的时间复杂度为O(N*logN)。
16、不稳定排序后,相同关键字元素的相对位置一定发生改变。
17、直接插入排序适用于元素个数较少或初始序列基本有序情况。
相关文档
最新文档