内容太多,直接从图开始:
//图结构则头结点数组和边数和结点数构成的
//头结点和表结点是不一样结构的,头结点包含了一个指针域表结点
void DFS(ALGraph *G,int v)//v表示结点位置
{
visited[v]=1;//置已访问标记
ArcNode *p=G->adjlist[v].firstarc;//得到头结点的第一指针域
while (p!=NULL)
{
if (visited[p->adjvex]==0)//若p->adjvex顶点未访问,递归访问它
{
printf("<%d,%d> ",v,p->adjvex);//输出生成树的一条边
DFS(G,p->adjvex);//遍历的边的另一顶点作为起点,遍历与他相关且没遍历过的边,把顶点其压入栈中。
}
p=p->nextarc;//已遍历了则下一个表结点
}
}
存储结构:
领接矩阵:
点元素数组
边二位矩阵描述边是否连接信息,【下标表示元素在数组中的位置】
点个数和边个数
【个人说明】
这时边的创建时由输入两个元素,
有了点个数和边个数就可以在对图进行大小设置,只要不超过最大值
邻接表:
表结点:结点在数组中的位置【信息域基本不用】【又拉了一个,看十字链表知道的】指向弧头的指针域,
头结点:元素,表结点指针域
图:头结点数组,边数,点数
十字链表:
弧结点:
该弧的尾头位置
弧头弧尾指针域
顶点结点:
元素【这是肯定的O(∩_∩)O哈哈~】
第一条入弧,出弧
图:头结点数组,边数,点数
图创建:
构造头结点数组【元素数组】根据点数
构造对应存储结构,两个元素确定一条边【十字链表是与头结点相关的,是最后进来的表结点与头结点连接的在存储结构上】
深度优先遍历:
先遍历与他相关的一条边,并把起点压入栈中。
遍历的边的另一顶点作为起点,遍历与他相关且没遍历过的边,把顶点其压入栈中。
依次循环下去。直到一个顶点与其相关的边都遍历过了。这时出栈。【出栈不是那么早的】
遍历出栈顶点相关联的没遍历的边。循环操作。
(简单就是遍历的顶点加入栈中,直到一个顶点所有边访问了,在出栈,在遍历出栈的顶点的其他边)。
广度优先遍历:
选一个顶点为起点,先遍历与他相关联的所有顶点,并把它们加入队列中。
遍历完相关顶点后,出队,在遍历出对顶点相关联的顶点,在把它们入队。在出队,循环以上操作。
直到队列为空。
求得关结点的方式:
其中的low的次序就是树的先根遍历得到元素的次序
low(元素)=low[v]=Min{visited[v],low[w],visited[k]},第一个根low(根)=1
凡是有回边都和他一样【其中w是顶点v在深度优先生成树上的孩子节点;k是顶点v在深度优先生成树上由回边联结的祖先节点】
然后叶子几点的low[叶子]
再根据公式基本可求得这些值了【指向双亲的树边也看成是回边】
这些都是没有人指导下琢磨出来的
无向图17条边,就输入17个点就行了!
第3章 栈和队列
3.1 栈
3.2 栈的应有和举例
3.3 栈与递归的实现
3.4 队列
3.5 离散事件模拟
第4章 串
4.1 串类型的定义
4.2 串的表示和实现
4.3 串的模式匹配算法
4.4 串操作应用举例
第5章 数组和广义表
5.1 数组的定义
5.2 数组的顺序表现和实现
5.3 矩阵的压缩存储
5.4 广义表的定义
5.5 广义表的储存结构
5.6 m元多项式的表示
5.7 广义表的递归算法第6章 树和二叉树
6.1 树的定义和基本术语
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.3 遍历二叉树和线索二叉树
6.3.1 遍历二叉树
6.3.2 线索二叉树
6.4 树和森林
6.4.1 树的存储结构
6.4.2 森林与二叉树的转换
6.4.3 树和森林的遍历
6.5 树与等价问题
6.6 赫夫曼树及其应用
6.6.1 最优二叉树(赫夫曼树)
6.6.2 赫夫曼编码
6.7 回溯法与树的遍历
6.8 树的计数
第7章 图
7.1 图的定义和术语
7.2 图的存储结构
7.2.1 数组表示法
7.2.2 邻接表
7.2.3 十字链表
7.2.4 邻接多重表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.4 图的连通性问题
7.4.1 无向图的连通分量和生成树
7.4.2 有向图的强连通分量
7.4.3 最小生成树
7.4.4 关节点和重连通分量
7.5 有向无环图及其应用
7.5.1 拓扑排序
7.5.2 关键路径
7.6 最短路径
7.6.1 从某个源点到其余各顶点的最短路径
7.6.2 每一对顶点之间的最短路径
第9章 查找
9.1 静态查找表
9.1.1 顺序表的查找
9.1.2 有序表的查找
9.1.3 静态树表的查找
9.1.4 索引顺序表的查找
9.2 动态查找表
9.2.1 二叉排序树和平衡二叉树
9.2.2 B树和B+树
9.2.3 键树
9.3 哈希表
9.3.1 什么是哈希表
9.3.2 哈希函数的构造方法
9.3.3 处理冲突的方法
9.3.4 哈希表的查找及其分析
第10章 内部排序
10.1 概述
10.2 插入排序
10.2.1 直接插入排序
10.2.2 其他插入排序
10.2.3 希尔排序
10.3 快速排序
10.4 选择排序
10.4.1 简单选择排序
10.4.2 树形选择排序
10.4.3 堆排序
10.5 归并排序
10.6 基数排序
10.6.1 多关键字的排序
10.6.2 链式基数排序
10.7 各种内部排序方法的比较讨论
第11章 外部排序
11.1 外存信息的存取
11.2 外部排序的方法
11.3 多路平衡归并的实现
11.4 置换一选择排序
11.5 最佳归并树
第1章 命题逻辑
1.1 命题符号化及联结词
1.2 命题公式及分类
1.3 等值演算
1.4 联结词全功能集
1.5 对偶与范式
1.6 推理理论
1.7 题例分析
习题
第2章 一阶逻辑
2.1 一阶逻辑基本概念
2.2 一阶逻辑合式公式及解释
2.3 一阶逻辑等值式
2.4 题例分析
习题
第3章 集合的基本概念和运算
3.1 集合的基本概念
3.2 集合的基本运算
3.3 集合中元素的计数
3.4 题例分析
习题
第4章 二元关系和函数
4.1 集合的笛卡儿积与二元关系
4.2 关系的运算
4.3 关系的性质
4.4 关系的闭包
4.5 等价关系和偏序关系
4.6 函数的定义和性质
4.7 函数的复合和反函数
4.8 题例分析
习题
第5章 代数系统的一般性质
5.1 二元运算及其性质
5.2 代数系统及其子代数和积代数
5.3 代数系统的同态与同构
5.4 题例分析
习题
第6章 几个典型的代数系统
6.1 半群与群
6.2 环与域
6.3 格与布尔代数
6.4 题例分析
习题
第7章 图的基本概念
7.1 无向图及有向图
7.2 通路、回路、图的连通性
7.3 图的矩阵表示
7.4 最短路径及关键路径
7.5 题例分析
习题
第8章 一些特殊的图
8.1 二部图
8.2 欧拉图
8.3 哈密顿图
8.4 平面图
8.5 题例分析
习题
第9章 树
9.1 无向树及生成树
9.2 根树及其应用
9.3 题例分析
习题
第10章 组合分析初步
10.1 加法法则和乘法法则
10.2 基本排列组合的计数方法
10.3 递推方程的求解与应用
10.4 题例分析
习题
第11章 形式语言和自动机初步
11.1 形式语言和形式文法