
数据结构
文章平均质量分 78
Labrador_Katie
这个作者很懒,什么都没留下…
展开
-
数据结构——排序 2
数据结构——排序 选择排序简单选择排序堆排序归并排序基数排序选择排序 简单选择排序基本思想: 在待排序的数据中选出最大(小)的元素放在其最终位置。基本操作:首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换重复上述操作,共进行n-1趟排序后,排序结束简单选择排序算法:void SelectSort(SqList &K){ for(i = 1; i< L.原创 2022-03-02 00:45:04 · 436 阅读 · 1 评论 -
数据结构——排序 1
数据结构——排序排序的基本概念排序方法的分类顺序表存储结构插入排序直接插入排序折半插入排序希尔排序交换排序冒泡排序法快速排序排序的基本概念 排序: 将一组杂乱无章的数据按一定规律顺次排列起来,即将无序序列排成一个有序序列(由小到大或由大到小)的运算。如果参加排序的数据结点包含多个数据域,那么排序往往是针对某个域而言。 排序方法的分类按存储介质可分为: 内部排序:数据量不大、数据在内存,无需内外存交换数据 外部排序:数据量较大、数据在外存(文件排序) 外部排序时,要将数据分原创 2022-03-01 17:08:43 · 1017 阅读 · 0 评论 -
数据结构——查找(散列表)
数据结构——查找(散列表)散列表的基本概念散列表的若干术语散列函数的构造方法处理冲突的方法开放定址法线性探测法二次探测法伪随机探测法链地址法散列表的查找散列表的基本概念基本思想:记录的存储位置与关键字之间存在对应关系对应关系——hash函数:Loc(i) = H(keyi) → hash函数例如:根据散列函数 H(key) = k查找 key = 9,则访问H(9) = 9号地址,若内容为9则成功;若查不到,则返回一个特殊值,如空指针或空记录优点:查找效率高缺点:空间效率低散列表的若干原创 2022-02-27 19:36:28 · 1561 阅读 · 0 评论 -
数据结构——树表的查找(平衡二叉树)
数据结构——树表的查找(平衡二叉树)平衡二叉树平衡二叉树平衡二叉树(balanced binary tree)又称AVL树(Adelson-Velskii and Landis)一棵平衡二叉树或是空树,或者是具有下列性质的二叉排序树: ①左子树和右子树的高度只差的绝对值小于等于1; ②左子树和右子树也是平衡二叉排序树。...原创 2022-02-26 19:43:36 · 382 阅读 · 0 评论 -
数据结构——树表的查找(二叉排序树)
数据结构——树表的查找树表的查找二叉排序树(Binary Sort Tree)二叉排序树的操作——查找二叉排序树的存储结构二叉排序树的查找分析二叉排序树的插入二叉排序树的生成二叉排序树的删除树表的查找 当表插入、删除操作频繁时,为维护表的有序性,需要移动表中很多记录。 改用动态查找表——几种特殊的树 二叉排序树(Binary Sort Tree)二叉排序树(Binary Sort Tree)又称为二叉搜索树、二叉查找树,定义:二叉排序树或是空树,或是满足如下性质的二叉树:原创 2022-02-22 23:11:54 · 1220 阅读 · 0 评论 -
数据结构——线性表的查找
查找查找的概念线性表的查找顺序查找(线性查找)折半查找(二分或对分查找)分块查找查找的概念主关键字:可唯一地标识一个记录的关键字就是主关键字次关键字:用以识别若干记录的关键字就是次关键字对查找表经常进行的操作:查询某个“特定的”数据元素是否在查找表中检索某个“特定的”数据元素的各种属性在查找表中插入一个数据元素删除查找表中的某个数据元素查找表可以分为两类:静态查找表: 仅作“查询”(检索)操作的查找表动态查找表: 作“插入”和“删除”操作的查找表 有时在查询之后,还需原创 2022-02-22 17:51:05 · 5301 阅读 · 0 评论 -
数据结构——图(图的应用)
图的应用生成树的概念最小生成树最小生成树的概念构造最小生成树Minimum Spanning Tree构造最小生成树方法一:普里姆(Prim)算法构造最小生成树方法二:克鲁斯卡尔(Kruskal)算法两种算法比较最短路径单源最短路径——迪杰斯特拉(Dijkstra)算法所有顶点间的最短路径——弗洛伊德(Floyd)算法有向无环图及其应用(拓扑排序)关键路径生成树的概念 生成树:所有顶点均有边连接在一起,但不存在回路的图一个图可以有许多可不同的生成树所有生成树具有以下共同特点:生成树的顶点个数原创 2022-02-20 18:32:43 · 2806 阅读 · 0 评论 -
数据结构——图(图的遍历)
图的遍历图的遍历深度优先遍历(DFS)DFS算法效率分析深度优先遍历算法的实现广度优先搜索遍历(BFS)BFS算法效率分析DFS与BFS算法比较图的遍历 遍历定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算遍历的实质:找每个顶点的邻接点的过程图的特点:图中可能存在回路,且图的任一顶点都可能与其他顶点想通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点怎样避免重复访问?解决思路:设置辅助数组 visited原创 2022-02-16 20:23:43 · 2159 阅读 · 0 评论 -
数据结构——图(存储结构)
数据结构——图图的定义和基本术语图的类型定义图的存储结构数组(邻接矩阵表示法)网(即有权图)的邻接矩阵表示法图的定义和基本术语图:G=(V,E) Grapg = (Vertex, Edge) V:顶点(数据元素)的有穷非空集合; E:边的有穷集合无向图:每条边都是无方向的有向图:每条边都是有方向的完全图:任意两点都有一条边相连稀疏图:有很少边或弧的图(e < nlogn)稠密图:有较多边或弧的图网: 边/弧带权的图邻接: 有边/弧相连的两个顶点之间的关系 存在原创 2022-02-16 12:44:50 · 3455 阅读 · 0 评论 -
数据结构——哈夫曼树及其应用
哈夫曼树及其应用哈夫曼的基本概念哈夫曼的基本概念路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径结点的路径长度:两结点间路径上的分支数树的路径长度:从树根到每一个结点的路径长度之和,记作TL**结点数目相同的二叉树中,完全二叉树是路径最短的二叉树**...原创 2022-02-04 13:11:06 · 5916 阅读 · 3 评论 -
数据结构——树和森林
树和森林树和森林树的存储结构双亲表示法树和森林树(Tree):是n(n≥0)个结点的有限集;若n = 0,称为空树;其中R是称为根(Root)的结点森林:是m(m≥0)棵互不相交的树的集合树和森林是可以相互转换的,为森林增加一个根结点就变成了树,反之亦然树的存储结构双亲表示法实现:定义结构数组存放树的结点,每个结点含两个域:数据域:存放结点本身信息双亲域:指示本结点的双亲结点在数组中的位置特点:找双亲容易,找孩子难类型描述:typedef struct PTNode{ T原创 2022-02-01 11:56:33 · 3476 阅读 · 0 评论 -
数据结构——树和二叉树
树和二叉树 二叉树的性质二叉树的性质性质1:二叉树的第 i 层上至多有 2i-1个结点(i >= 1)性质2:深度为k的二叉树至多有2k-1个结点(k >= 1)性质3:对于任何一颗二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0 = n2 + 1...原创 2022-01-29 08:54:05 · 2210 阅读 · 0 评论 -
数据结构——串
串串的定义串的类型定义串的存储结构串的模式匹配算法BF(Brute-Force)算法KMP(Knuth Morris Pratt)算法串的定义 串(String) —— 零个或多个任意字符组成的有限序列几个术语:子串:串中任意个连续字符组成的子序列成为该串的子串真子串:是指不含自身的所有子串主串:包含子串的串相应地称为主串字符位置:字符在序列中的序号为该字符在串中的位置子串位置:子串第一个字符在主串中的位置空格串:由一个或多个空格组成的串,与空串不同串相等:当且仅当两个串原创 2022-01-20 14:31:06 · 2478 阅读 · 0 评论 -
数据结构——队列
队列的表示和操作的实现队列队列的顺序表示和实现队列的链式表示和实现队列 队列(Queue): 只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)逻辑结构: 和线性表相同,仍为一对一的关系存储结构: 顺序队或链队,以循环顺序队列更常见运算规则: 只能在队首或队尾运算,且访问结点时依照先进先出(FIFO)的原则实现方式: 关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同 队列的顺序表示和实现解决假上溢的原创 2022-01-18 15:46:13 · 1706 阅读 · 0 评论 -
数据结构——线性表的合并和有序表的合并
线性表的合并和有序表的合并线性表的合并有序表的合并线性表的合并问题描述:假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A = A∪BLa = (7, 5, 3, 11) Lb = (2, 6, 3) ➡ La = (7, 5, 3, 11, 2, 6) 算法步骤:依次取出Lb中的每个元素,执行以下操作:在La中查找该元素如果找不到,则将其插入L原创 2022-01-05 15:56:51 · 1488 阅读 · 0 评论 -
数据结构——双向链表
双向链表原创 2022-01-03 14:58:33 · 1031 阅读 · 0 评论 -
数据结构——顺序表和链表的比较
顺序表和链表的比较链式存储结构的优点:结点空间可以动态申请和释放;数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素链式存储结构的缺点:存储密度小,每个结点的指针域需额外占用存储空间。当每个结点的数据域所占字节不多时,指针域所占存储空间的比重显得很大链式存储结构是非随机存取结构。对任一结点的操作都要从头指针依指针链查找到该结点,这增加了算法的复杂度存储密度: 存储密度是指结原创 2022-01-03 14:48:00 · 559 阅读 · 0 评论 -
数据结构——循环链表
循环链表循环链表将两个循环链表合并循环链表 一种头尾相接的链表(表中最后一个结点的指针域指向头结点,整个链表形成一个环)优点:从表中任意结点出发均可找到表中其他结点循环链表是否为空的条件是:判断它们是否等于头指针p != Lp -> next != L将两个循环链表合并算法思路:p存表头结点Tb表头连接到Ta表尾释放Tb表头结点修改指针(Tb尾结点指向Ta头结点)算法描述:LinkList Connect(原创 2022-01-02 17:08:38 · 688 阅读 · 2 评论 -
数据结构——单链表基本操作的实现
链表单链表的初始化单链表的初始化//单链表的存储结构typedef struct LNode{ //声明结点的类型和指向结点的指针类型 ELemType data; //结点的数据域 struct LNode *next; //结点的指针域}LNode, *LinkList; //LinkList为指向结构体Lnode的指针类型Status InitList_L(LinkList &L){ L = new LNode; //或L = (LinkList) malloc (s原创 2021-12-24 19:58:32 · 2447 阅读 · 0 评论 -
数据结构——顺序表基本操作的实现
顺序表基本操作的实现补充:操作算法中用到的预定义常量和类型补充:操作算法中用到的预定义常量和类型//函数结果状态代码#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2//Status 是函数的类型,其值是函数结果状态代码typedef int Status;typedef char ElemType;...原创 2021-12-15 17:16:49 · 507 阅读 · 0 评论 -
数据结构——传值&传址
传值传址原创 2021-12-09 15:49:40 · 642 阅读 · 1 评论 -
数据结构 —— 栈
目录栈的概念栈的基本操作栈的顺序存储结构栈的概念栈(stack):只允许在表尾进行插入和删除的一种线性表。栈顶(top):只允许进行插入和删除的一端。栈底(bottom):固定的一段。入栈:a1➡a2➡a3➡a4➡a5出栈:a1⬅a2⬅a3⬅a4⬅a5把空的线性表当作一个空瓶子,将水从瓶口倒入空瓶的操作称作"入栈(push)",将瓶中的水从瓶口倒出的操作称为"出栈(pop)"。栈的基本操作InitStack(&L):初始化一个空栈L。StackEmpty(L):判断一个栈是否为原创 2021-09-03 04:29:42 · 490 阅读 · 0 评论 -
数据结构 —— 链表
链表线性表链表的分类单向链表双向链表循环链表线性表线性表:由零个或多个数据元素组成的有限序列。线性表有两种存储方式:顺序存储结构——即数组链式存储结构——即链表线性表强调:它是一个序列,元素之间有个先来个后到;若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继;线性表强调是有限的。链表的分类单向链表单向链表是最简单的链表形式。我们将链表中最基本的数据称为节点(node),每一个节点包含了数据块和指向下一个节点的指针。特点:用一组任意的存储原创 2021-08-28 08:31:08 · 1246 阅读 · 0 评论 -
数据结构 —— 静态链表
静态链表静态链表静态链表中的节点备用链表静态链表的实现在静态链表中添加一个元素静态链表删除元素静态链表中查找元素静态链表中更改数据静态链表静态链表: 线性存储结构的一种,兼顾顺序表和链表的优点,是顺序表和链表的升级; 静态链表的数据全部存储在数组中(顺序表),但存储的位置是随机的,数据直接的一对一关系是通过一个整型变量(称为“游标”,类似转载 2021-08-25 05:55:28 · 681 阅读 · 0 评论