开发工具与关键技术:VS
作者:LJR
撰写时间:2020年 05 月 18 日
5.1:数组
1.所谓数组,是有序的元素序列。
2.二维数组:一维数组的每个元素都是一维数组。
Map的基本操作包括:
1.增加键值对 put()
2.根据见获取值 get()
3. 根据键移除键值对 remove()
6.1:树
树形结构是一种应用十分广泛的非线性结构,客观世界中广泛存在的。
树的定义:
树由n(n>=0)个结点组成的有限集合T
如果n=0,称树为空;
如果n>0,则满足;
.有一个特定的称之为根(root)的结点,它只有直接后继,但没有前驱
.除根以外的其它结点划分为m(m>0)个互不相交的有限集合T1,T2……Tm,每个集合又是一颗树,并且称之为根的子树(subTree)。
每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。
树的基本术语:
节点(node)包含一个数据元素及若干个指向其子树的分支
节点的度(degree)节点的子树的个数
树的度(degree)树中节点度的最大值
叶子(leaf)度为零的节点
分支(branch)度不为零的节点
孩子(child)某节点的各子树的根
双亲(parent)该节点的直接前驱节点
兄弟(sibling)具有相同双亲的节点
有序树和无序树 如果树中每个节点的各子树是从左到右有次序
森林 m(m>=0)根互不相交的树的有限集合
.树的深度:树中所有节点的最大层数,也称高度
由于子树的互不相交性,树中每个节点只属于一颗树(子树),且树中的每一个结点都是该树中某一颗子树的根。
在不同的应用场合,可以用不同的方法来表示树,常用的方法有一下几种:
(1) 直观(树形,倒置树)树的形状像一颗倒立的树
(2) 嵌套集合 用集合表示结点之间的层次关系对于其中任意两个集合,或者不相交,或者一个集合包含另一个集合
(3) 凹入(缩进)表示法 类似于书的目录,用结点逐层缩进的方法表示树中各结点之间的层次关系
(4) 广义表(嵌套括号)表示法 用于括号的嵌套表示结点之间的层次关系,主要用于树的理论描述。
6.2:二叉树
二叉树是最简单的树形结构,所有的一般树都可以转换为二叉树,转换后的二叉树也能按一定规则还原为一般树。
定义:二叉树是树形结构中的一种最典型、最常用的结构,处理起来比一般树简单,而且树也可以很容易地转换成二叉树。
二叉树是n(n>=0)个结点的有限集合BT,它或者是空集,或者由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树组成。
二叉树的基本操作:
(1) 初始化InitTree(BT):将二叉树BT初始化为一颗空树。
(2) 判断二叉树是否为空TreeEmpty(BT):判断一颗树BT是否为空,若为空,返回真否则返回假。
(3) 求根结点Root(BT):返回树BT的根结点
(4) 求双亲结点Parent(BT,x):返回二叉树BT中x的双亲结点,如果x为根结点,则返回空。
(5) 求二叉树的高度Depth(BT):返回二叉树BT的高度(深度)。
(6) 求结点的左孩子LChild(BT,x):返回二叉树BT中结点x的左孩子结点,若结点x为叶子结点或x不在二叉树BT中,则返回值为“空”。
(7) 求结点的右孩子RChild(BT,x):返回二叉树BT中结点x的右孩子结点,若结点x为叶子结点或x不在二叉树BT中,则返回值为“空”。
(8) 遍历二叉树Traverse(BT):从根结点开始,按照一定的次序访问二叉树BT中所有的结点。
6.3:二叉树的遍历
遍历二叉树:以某种次序访问二叉树中的每个结点,且每个结点仅被访问一次
访问:如查询结点数据域的内容、输出结点的数据、修改结点的数据或是执行对结点的其它操作。
二叉树的定义:
一颗二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。每个结点最多只有两个孩子。
二叉树的链式存储结构:
最常用的是二叉链表的三叉链表
二叉链表的每个结点有一个数据域和两个指针域,
一个指针指向左孩子,另一个指向右孩子。
哈夫曼树的基本概念:
路径长度:两个结点之间的路径长度是链接两结点的路径上的分支数
树的路径长度:根结点到个结点的路径长度之和
7.1:图:
1.图结构是一种比树形结构更复杂的非线性结构,任意一个结点都可以有任意多个前驱和后继。图结构是一种重要的数据结构。
定义:图是有由顶点集合及顶点间的关系集合组成的一种数据结构。
Graqh=(V,E)
其中 V是顶点的有穷非空集合;E是顶点之间关系的有穷集合,也叫边集合。
2.图的基本术语:(1.邻接点、2.顶点的度、入度的出度、3.完全图、稠密图、稀疏图4.子图、5.路径、6.连通图、连通分量、7.强连通图、强连通分量、8.权、网)
3.邻接矩阵概念
邻接矩阵这种存储结构采用两个数组来表示图,一个是一维数组,存储图中的所有顶点的信息:另一个是二维数组,即邻接矩阵,存储顶点之间的关系。
8.0查找:
静态查找是指在静态查找表上进行的查找操作,查找满足条件的数据元素的存储位置或各种属性。
一、顺序查找
基本思想:1.查找表的存储结构是线性表(顺序表或链表)
2.查找过程是依次用查找条件中给定的值与查找表中数据元素的关键字值进行比较。
二、折半查找
折半查找只适合用于对有序顺序表进行查找。
折半查找的基本思想是:
- 每进行一次折半查找,要么查找成功,结束查找,要么将范围缩小一半,如此重复
- 直到查找成功或查找范围缩小为空即查找失败为止。
小结: - 二分查找算法平均查找长度为log2n,比较次数少,查找速度快。
- 只能应用于有序的顺序表
- 二分查找适用于那种一经建立就很少改动,而又经常用需要查找的顺序表。