河南科技大学 数据结构
- 格式:docx
- 大小:27.68 KB
- 文档页数:21
1数据:数据是人们利用文字符号、数字符号以及其他规定的符号对现实世界的事物及其活动所做的抽象描述。
2线性表:线性表是具有相同属性的数据元素的一个有限序列。
3稀疏矩阵:稀疏矩阵是矩阵中的一种特殊情况,其非零元素的个数远远小于零元素的个数。
4栈:栈又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。
5数据类型:数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种综合描述。
6数据结构:数据结构是指数据以及相互之间的联系。
7链接存储:在链接存储中,每个存储结点不仅含有所存元素本身的信息,而且
其中data
1,p
2
,...,p
m
(m≥1)均为指针域,
8队列:队列简称队,它也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。
9堆:堆分为小根堆和大根堆两种。对于一个小根堆,它是具有以下特性的一棵完全二叉树:(1)若树根结点存在左孩子,则根结点的值(或某个域的值)小于等于左孩子结点的值(或某个域的值);(2)若树根结点存在右孩子,则根结点的值(或某个域的值)小于等于右孩子结点的值(或某个域的值)。(3)以左右孩子为根的子树又各是一个堆。(4)大根堆的定义与上述类似,只要把小于等于改为大于等于就可以了。
简答题
一、中缀表达式如何转换为后缀表达式课本89页几道例题
二、算法的定义及具有哪些特性
算法定义就是解决特定问题的方法。五个特性:1、有穷性:一个算法必须在执行有穷步之后结束。2、确定性:算法中每一步都必须有确切的含义。3、可行性:算法中每一步都必须是可行的,即算法中每一步都能够通过手工或机器可以接受的有限次操作在有限时间内实现。4、输入:一个算法可以有0个1个或多个输入量,在算法被执行前提供给算法。5、输出:一个算法执行结束后至少有一个输出量,它是利用算法对输入量进行运算和处理的结果。
三、树的性质1树中的结点数等于所有的结点的度数加1;2度为k的数中第i 层上至多有k i-1个结点(i>>1);3深度为h的k叉树至多有(k h-1)/(k-1)个结点;4具有n个结点的k叉树的最小深度为[logk(n(k-1)+1)](k为底数)四、什么是二叉搜索数:二叉搜索数又称二叉排序树,它或者是一棵空树,或者是一棵具有如下特性的非空二叉树:(1)若它左子树非空,则左子树上所有结点的关键字均小于根结点的关键字;(2)若它的右子树非空,则右子树上所有节点的关键字均大于(若允许具有相同的关键字的结点存在,则大于等于)根结点的关键字;(3)左、右子树本身又各是一棵二叉搜索树
五、什么是图、子图、完全图、路径、回路、连通、网
1图是一种复杂的非线性数据结构。2设有两个图G=(V,E)和G’(V’,E’),若V’是V的子集,即V’⊆V,且E’是E的子集,即E’⊆E,则称G’是G的子图。3若无向图中的每两个顶点之间都存在着一条边,有向图中的每两个顶点之间都存在着方向相反的两条边,则称此图为完全图。4在一个图G中,从顶点v
到顶点v’的一条路径是一个顶点序列vi1,vi2,…,vim,其中v=vi1,v’=vim,若此图是无向图,则(vij-1,vij)∈E(G),(2≤j≤m);若此图是有向图,则
为回路。6在有向图G中,若从顶点v
i 到v
j
有路径,则称从v
i
到v
j
是连通的。7
边上带有权的图称作带权图,也常称作网。
六、一般从哪几个方面对算法进行评价?
正确性,健壮性,可读性,简单性,时间复杂度,空间复杂度。
七、给出广义表,画出树:课本118页最上面的广义表,对应的树为图5-1
八、二叉树的性质:1二叉树上终端结点数等于双分支结点数加1;2二叉树上第i层上至多有2i-1个结点(i>>1);3深度为h的二叉树至多有2h-1(2的h 次方减1)个结点;4对完全二叉树中编号为i的结点(1≤i≤n,n>1,n为结点数)有:(1) 若i≤n/2,即2i≤n,则编号为i的结点为分支结点,否则为叶子结点。表达式x表示对x进行向下取整。(2) 若n为奇数,则树中每个分支结点都既有左孩子,又有右孩子;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左、右孩子都有。(3) 若编号为i的结点有左孩子,则左孩子结点的编号为2i;若编号为i的结点有右孩子,则右孩子结点的编号为2i+1,即遵循对一般二叉树的编号规则。(4) 除树根结点外,若一个结点的编号为i,则它的双亲结点的编号为n/2,也就是说,当i为偶数时,其双亲结点的编号为i/2,它是双亲结点的左孩子,当i为奇数时,其双亲结点的编号为(i-1)/2,它是双亲结点的右孩子。此点也适合于一般
二叉树。5具有n个(n>0)结点的完全二叉树的深度为log
2(n+1)或log
2
n+1。
九、二叉树有几种遍历递归算法?并写出算法。前序遍历算法
void Preorder(struct BTreeNode* BT)
{ if(BT!=NULL) {
printf("%c ",BT->data);
Preorder(BT->left);
Preorder(BT->right); }
}
中序遍历算法
void Inorder (struct BTreeNode* BT)
{ if (BT!=NULL) {
Inorder(BT->left);
printf("%c ",BT->data);
Inorder(BT->right);}
}
后序遍历递归算法
void Postorder(struct BTreeNode* BT)
{ if(BT!=NULL) {
Postorder(BT->left);
Postorder(BT->right);
printf("%c ",BT->data); }
}
十、什么是哈夫曼树?写出它的具体算法