随笔分类 - c/c++ 语言
摘要:简单工厂模式 /* * 简单工厂模式 * * 优点: 帮助封装 实现组件封装,面向接口编程 解耦合 客户端和具体实现类的解耦合 缺点: 可能增加客户端的复杂度 不方便扩展子工厂 */ #include <iostream> #include <string> using namespace std;
阅读全文
摘要:condition_variable 是 C++11 中的一个线程库类,用于实现线程间的同步和通信。condition_variable 可以与 unique_lock 或 lock_guard 一起使用,用于实现线程的等待和唤醒操作。condition_variable 的主要作用是在多个线程之间
阅读全文
摘要:10.1、直接插入排序 ==算法思想的图示== ==直接插入排序C代码实现== #include <stdio.h> #include <stdlib.h> #define boolean int #define false 0; #define true 1; //nums:待排序数组,lengt
阅读全文
摘要:8.12、有向无环图(DAG)、AOV网、拓扑排序 有向无环图(DAG) 若一个有向图中不存在环,则称为有向无环图,简称DAG图(Directed Acyclic Graph). AOV网 AOV网(Activity Vertex NetWork,用顶点表示活动的网),用DAG图(有向无环图)表示一
阅读全文
摘要:8.9、最短生成路径-BFS算法 BFS算法只能处理无权图 ==BFS算法的基本思想== ==代码实现== #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define MaxInteger 3
阅读全文
摘要:8.8、最小生成树 连通图的生成树是包含图中全部顶点的一个极小连通子图;若图中顶点数为n,则它的生成树含有条边。 ==最小生成树== 对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为图G的所有生产树的集合,若==T为R中边的权值之和
阅读全文
摘要:8.6、图的广度优先遍历 找到与顶点相邻的所有顶点, 标记哪些顶点被访问过 需要一个辅助队列 #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define boolean int #define
阅读全文
摘要:8、图 8.1、图的概念和定义 图G由==顶点集V==和==边集E==组成,记为G=(V,E),其中V(G)表示图G中定点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合。若{},则用==|V|==表示图G的==顶点个数==,也称==图G的
阅读全文
摘要:7.7、二叉树、树、森林 定义树可以使用,孩子兄弟表示法,做指针表示孩子,右指针表示树 typedef struct CSNode{ ElemType data; struct CSNode *firstchilde,*nextsibling;//第一个为孩子,第二个为兄弟 }CSNOde,*CST
阅读全文
摘要:7.9、平衡二叉树(Balanced Binary Tree) 简称平衡树(AVL树)—— 树上任一结点的左子树和右子树的高度只差不会超过1 结点的平衡因子 = 左子树高度 - 右子树高度 得到:平衡二叉树的结点的平衡因子只能为 ==最小不平衡树(LL)== ==最小不平衡树(RR)
阅读全文
摘要:7.8、二叉排序树(BST) 二叉排序树又称二叉查找树 左子树上所有结点的值都小于根结点的值 右子树上所有结点的值都大于根结点的值 左子树和右子树又是一颗二叉排序树 左子树的结点值 < 根结点值 < 右子树的结点值 ==插入的数据的递归实现== #include <stdio.h> #include
阅读全文
摘要:7.6、线索二叉树 由于二叉树结构中各种遍历(中序、前序、后序、层次)不知道结点的前驱和后继,可以利用那些没有孩子的结点的指针指向它的前驱和后继;没有前驱或者后继就指向NULL 让 ==左孩子指向前驱 右孩子指向后继== 如果在存储上,需要定义两个变量来表示这个结点指向的是==前驱和后继==还是==
阅读全文
摘要:7.5、二叉树的遍历 先序遍历:根左右(NLR) 中序遍历:左根右(LNR) 后序遍历:左右根(LRN) 层次遍历:一层从左到右遍历 ==代码实现== //访问结点 void Vist(TreeNode *node){ printf("%d , ",node->data); } //先序遍历 voi
阅读全文
摘要:7.3、二叉树的存储结构 ==二叉树的顺序存储== 完全二叉树,实现一些基本操作,如果不是完全二叉树最好使用链表 #include <stdio.h> #include <stdlib.h> #include<math.h> #define MaxSize 100 #define ElemType
阅读全文
摘要:6、串 串的定义 串,即字符串(string)是由零个或多个字符串组成的有限序列。 术语: 子串:串的任意个连续的字符组成的子序列 主串:包括子串的串 字符在主串中的位置:字符在串中的序号 子串在主串中的位置:子串的第一个字符在主串中的位置 注意:这里的位置是==从1开始,而不是0== 6.1、串的
阅读全文
摘要:5、矩阵的压缩存储 5.1、对称矩阵的压缩存储 若n阶矩阵任意一个元素,都有的的矩阵称为对称矩阵, 普通存储:二位数组存储需要n*n个位置 压缩存储策略:值存储对角线和下三角(或者对角线和上三角) $$\begin{pmatrix} a_{1,1} & a_{1
阅读全文
摘要:4、队列 ==队列(Queue)==是只允许在一段插入另一端删除的==线性表== 先进先出(FIFO) 4.1、顺序队列 ==队列定义和初始化== #include <stdio.h> #include <stdlib.h> #define MaxSize 10 #define ElemType i
阅读全文