随笔分类 -  数据结构和算法

摘要:一、概念 思想: 如果元素比较是逆序则交换元素。 1.冒泡排序 基本思想:基于简单交换思想 每趟不断将元素两两比较,按照需要是顺序判断是否需要进行交换。 void bubble_sort(SqList &L) { // 冒泡排序算法 int m,i,j; RedType x; // 交换时临时存储 阅读全文
posted @ 2023-02-17 09:48 铜须的编程生活 阅读(39) 评论(0) 推荐(0) 编辑
摘要:一、树表的查找 1.概念 当表的插入、删除操作比较频繁时,为维护表的有序性,需要移动表中很多记录。需要适用动态查找表—几种特殊的树 表结构在查找过程中动态生成,对于给定key,若表中存在,则成功返回;否则,插入关键字等于key的记录。 有:二叉排序树、平衡二叉树、红黑树、B-树、B+树、建树 2.二 阅读全文
posted @ 2022-04-22 09:59 铜须的编程生活 阅读(186) 评论(0) 推荐(0) 编辑
摘要:一、有向无环图 针对:有向无环图:没有形成回路的有向图。类似于树 有向无环图通常用来描述一个工程或系统的进行过程(通常把计划、施工、生产、程序流程图当成一个工程),且一个工程可以分为若干个子工程,只要完成这些子工程,就可以导致整个工程的完成。 AOV网: 用一个有向图表示一个工程的各子工程及其相互制 阅读全文
posted @ 2022-04-20 14:38 铜须的编程生活 阅读(752) 评论(0) 推荐(0) 编辑
摘要:应用问题:交通路径问题,选择最短路径 顶点——表示地点弧——表示两个地点由路连通弧上的权值——表两地点之间的路径,花费等。 实际就是:在有向网中A点(源点)到达B点(终点)的多个路径中,寻找一条各边权值之和最小的路径,即最短路径。(最短路径和最小生成树不同,路径上不一定包含n个顶点,也不一样包含n- 阅读全文
posted @ 2022-04-20 09:26 铜须的编程生活 阅读(194) 评论(0) 推荐(0) 编辑
摘要:生成树:所有顶点均由边连接在一起,但不存在回路的图。(从任意点出发可以遍历到其他任何点,但是不能回到自身) 一个图可以有许多棵不同的生成树了,但是其中 生成树的顶点个数和图的顶点个数相同 生成树是图的极小连通子图,去掉一条边则非连通。 一个有n个顶点的连通图的生成树有n-1条边(反之不一定),再加一 阅读全文
posted @ 2022-04-15 16:46 铜须的编程生活 阅读(268) 评论(0) 推荐(0) 编辑
摘要:一、图的遍历概念 定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每一个顶点仅被访问一次,就叫做图的遍历,他说图的基本运算。 遍历的实质:找每个顶点的邻接点的过程。 特点:因为图中是多对多,所有图中有可能存在回路,且图的任一顶点都可能与其他顶点相通,在访问完某个顶点之后可能沿着 阅读全文
posted @ 2022-04-14 11:47 铜须的编程生活 阅读(167) 评论(0) 推荐(0) 编辑
摘要:一、图的概念 通常图表示为偶对,是顶点和边的集合 G = (V,E)V:顶点(数据元素)的又穷非空集合G:边的又穷集合 1.图的分类 1.通常根据边有无方向分为:又向图和无向图。 2.根据任意两个顶点之间是否有边相连称为:完全图其中:无向完全图中 n个顶点有 n(n-1)/2 条边 有向完全图中 n 阅读全文
posted @ 2022-04-14 10:36 铜须的编程生活 阅读(221) 评论(0) 推荐(0) 编辑
摘要:一、哈夫曼树的基本概念 也叫最优二叉树 1.引子: 将很多学生的百分制成绩转化为五分制成绩<60: D 60-69: D 70-79:C 80-89:B 90-100:A 两种判断的方式所需要的比较总的次数明显不同,在数据量很大的情况下所需要的时间也会差距很大 2.基本术语 路径:从树中的一个结点到 阅读全文
posted @ 2022-04-10 16:34 铜须的编程生活 阅读(466) 评论(0) 推荐(0) 编辑
摘要:一、森林和树 树:是n(n>=0)个结点的有限集。若 n = 0,称为空树 森林:是m(m>=0)棵互不相交的树的集合 1.树的存储结构 实现: 1.双亲表示法 定义结构数组,存放树的结点,每个结点包含两个域:数据域:存放结点本身信息 双亲域:指示本结点的双亲结点在数组中的位置 找双亲任意,找孩子难 阅读全文
posted @ 2022-04-06 18:07 铜须的编程生活 阅读(47) 评论(0) 推荐(0) 编辑
摘要:一、二叉树的遍历 遍历:顺着某一条搜索路径巡访二叉树中的结点,使的每个结点均被访问一次,而且仅被访问一次。 遍历的目的:得到树中所有结点的一个线性排序 遍历的作用:是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心 一般讨论三种遍历方案:1.根左右,2.左根右,3.左右根 阅读全文
posted @ 2022-04-06 14:34 铜须的编程生活 阅读(241) 评论(0) 推荐(0) 编辑
摘要:一、满二叉树 1.概念:一颗深度为K且有2k-1个结点的二叉树称为满二叉树(每一个结点都有左右子树) 特点:1.每一层上的结点数都是最大结点数(即每层都是满的) 2.叶子结点全部在最底层 二、完全二叉树 1.概念 深度为K的具有n个结点的二叉树,当且仅当其每一个结点都与深度K的满二叉树中编号为1~n 阅读全文
posted @ 2022-04-02 14:23 铜须的编程生活 阅读(77) 评论(0) 推荐(0) 编辑
摘要:一、树 1.概念 前驱唯一,后驱不唯一(一对多,是非线性结构,结点之间有分支,具有层次关系) 数是n(n>=0)个结点的有限集 若n=0为空树 n>0时,有且仅有一个特定的称为根的结点其余结点可以分为m(m>=0)个互不相交的有限集T1,T2,T3...Tm,其中每一个集合本身又是一棵树,并称为根的 阅读全文
posted @ 2022-04-01 17:54 铜须的编程生活 阅读(79) 评论(0) 推荐(0) 编辑
摘要:一、广义表 广义表(有称Lists):是n>=个元素 a0,a1,an-1的有序列,其中每一个ai或者是原子,或者是一个广义表。广义表中的元素没有定义是否为同种元素。 广义表通常记作:LS = (a1,a2,... ,an) 其中: LS为表名, n为表长度, 每一个ai为表的元素 习惯上,一般用大 阅读全文
posted @ 2022-03-30 17:53 铜须的编程生活 阅读(204) 评论(0) 推荐(0) 编辑
摘要:一、数组 数组:按一定格式排列起来的具有相同类型的数据元素集合。 一维数组:若线性表中的数据元素为非结构的简单元素,则称为一维数组 一维数组的逻辑结构:线性结构。定长的线性表 数组的特点:结构固定——定义后维数和维界不再改变 一般不做删除和添加元素的操作。做修改,取元素 二维数组:可以看作线性表也可 阅读全文
posted @ 2022-03-30 17:23 铜须的编程生活 阅读(119) 评论(0) 推荐(0) 编辑
摘要:一、串的概念 串:零个或多个任意字符串组成的有限序列 S="a1 a2 ... an" S :串名 a1-an:串值 n是串长, n=0是空串 字串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串 “abcde”的子串有: “”、“a”、“ab”、“abc”、...... 、“abcde 阅读全文
posted @ 2022-03-28 15:11 铜须的编程生活 阅读(134) 评论(0) 推荐(0) 编辑
摘要:(一)队列的链式表示 若用户无法估计所用队列的长度,则宜采用链队列,仍然两个指针:一个front 头指针,一个rear尾指针 // 链队列的数据定义 #define MAXQIZE 100 //最大长度 typedef struct Qnode { QElemType data; stuct Qno 阅读全文
posted @ 2022-03-28 14:26 铜须的编程生活 阅读(93) 评论(0) 推荐(0) 编辑
摘要:(一)队列 队列是仅在表尾进行插入操作,表头进行删除操作的线性表,是一种先进先出的线性表入队操作尾指针,出队移动头指针。队列的存储结构为链队或者顺序队(常用循环顺序队) 1. 抽象数据结构 ADT Queue{ D = {ai|ai ∈E了吗Set,i=1,2...,n>=0} // 数据对象 R 阅读全文
posted @ 2022-03-28 10:01 铜须的编程生活 阅读(258) 评论(0) 推荐(0) 编辑
摘要:(一)递归 若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的。若一个过程直接或者间接地调用自己,则称这个过程是递归的过程(比如:递归求n的阶乘) 一下三种情况常用到递归方法:1.递归定义的数学函数2.具有递归特性的数据结构3.可递归求解的问题 递归——实际是分治法求解分治法:对 阅读全文
posted @ 2022-03-25 15:39 铜须的编程生活 阅读(36) 评论(0) 推荐(0) 编辑
摘要:(一)链栈 链栈是运算受限的单链表,只能在链表头部进行操作 // 链栈的结点 typeof struck StackNode{ SElemType data // 链栈的数据域 struck StackNode *next // 链栈的指针域 }StackNode, *LinkStack 链栈的头指 阅读全文
posted @ 2022-03-25 14:45 铜须的编程生活 阅读(140) 评论(0) 推荐(0) 编辑
摘要:一、栈的操作 栈是一种在表尾进行插入、删除操作的线性表,是先进后厨 (一)数据结构定义 ADT Stack { // 数据对象 D = {ai| ai∈ ElemSet, i = 1,2,3...n, n>=0} // 数据关系 R1 = {< ai-1, ai>| ai - 1, ai ∈ D, 阅读全文
posted @ 2022-03-24 23:41 铜须的编程生活 阅读(215) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示