数据结构
文章平均质量分 65
基础理论
西西阿西哥
从零开始的信息世界生活
展开
-
编程题——线性表
408线性表部分编程题总结,少了10、11、13年顺序表的,有空加上。原创 2022-10-23 22:01:15 · 482 阅读 · 1 评论 -
图图图图图
图的基本概念点边无向图有向图简单图:没有多重边和环 注意数据结构中只讨论简单图多重图简单完全图:边数为(n-1)+(n-2)+…+1 = (n-1)*n/2子图无向图中:连通(存在路径相连的两顶点)连通图(任意两顶点连通)极大连通子图(连通子图包含其所有的边)极小连通子图 (保持图连通又要使得边数最少的子图)连通分量(无向图的极大连通子图称为连通分量)有向图中:强连通(存在双向路径的两顶点)强连通图(任意两点强连通)极大强连通子图(连通子图包含其所有的边)极小强原创 2021-09-24 10:51:25 · 430 阅读 · 0 评论 -
数据结构4-6章 回忆总结
串的定义和实现:定长顺序存储;堆分配存储;块链存储串的模式匹配:简单的模式匹配算法、KMP算法、next数组的求法、KMP算法的进一步优化树的定义和基本术语:树是一种逻辑结构;祖先、子孙、双亲、兄弟;节点的度;分支节点、叶子节点;节点的层次、节点的深度、节点的高度;有序树、无序树;路径、路径长度;森林树的基本性质二叉树的定义,特殊二叉树:递归定义;满二叉树、完全二叉树、二叉排序树、平衡二叉树二叉树的存储结构:顺序存储、链式存储;实现二叉树的遍历:先序遍历、中序遍历、后序遍历;递归算法、非递归算.原创 2021-08-20 14:37:02 · 81 阅读 · 0 评论 -
图的应用:最小生成树;最短路径;有向无环图描述表达式;拓扑排序;关键路径
文章目录图的应用最小生成树Prim算法Kruskal算法最短路径有向无环图描述表达式拓扑排序关键路径图的应用最小生成树图G的最小生成树T是G的所有生成树中边的权值之和最小的树最小生成树:Minimum-Spanning-Tree,MST性质:最小生成树不是唯一的最小生成树的边的权值之和是唯一的最小生成树的边数为定点数减一构成最小生成树的大多数算法利用了最小生成树的下列性质:假设G是一个带全联通的无向图,Y是顶点集V的一个非空子集。假设U是顶点集V的一个非空子集,假设有序对(u_0,v_原创 2021-08-19 14:39:46 · 484 阅读 · 0 评论 -
-图的遍历-
文章目录图的遍历广度优先搜索BFS算法BFS算法的性能分析BFS算法求解单源最短路径问题广度优先生成树深度优先搜索DFS算法DFS算法的性能分析深度优先的生成树和生成森林图的遍历和连通性图的遍历图的遍历即总图的某一顶点出发,沿着图的边,将图的所有顶点依次访问依次且只访问一次。树是一种特殊的图(极小连通子图),所以树的遍历也可以看作一种特殊的图的遍历。图的遍历算法是求解图的连通性,拓扑排序和求关键路径等算法的基础树的遍历沿边访问不会访问重复的节点(访问过的节点要从栈中读取),而图沿边访问是可能重复访原创 2021-08-19 10:50:54 · 252 阅读 · 0 评论 -
图的存储及基本操作
文章目录存储方式邻接矩阵法邻接表法十字链表邻接多重表基本操作存储方式邻接矩阵法#define MaxVertexNum 100typedef char VertexType;//顶点数据类型typedef int EdgeType;//权值数据类型typedef struct{ VertexType vertex[MaxVertexNum]; EdgeType edge[MaxVertexNum][MaxVertexNum]; int vertexNum,arcNum;//arc:弧}M原创 2021-08-17 16:59:50 · 177 阅读 · 0 评论 -
二叉树的线索化
中序线索化//中序遍历typdef struct ThreadNode{ //线索二叉树 ElemType data; //数据项 struct ThreadTree *lchild,*rchild; //左孩子右孩子 int ltag,rtag; //线索标识(初始化为0,若左孩子是空指针则ltag设为1,右孩子同理)}ThreadNode, *ThreadTree;void InThread(ThreadTree T){ //线索化的本质为一个原创 2021-08-11 11:29:41 · 81 阅读 · 0 评论 -
由遍历序列构造二叉树
给定一个前序遍历或中序遍历或后序遍历或层序遍历序列不能唯一确定二叉树是什么形态以下组合可唯一确定一种二叉树的形态前序 + 中序后序 + 中序层序 + 中序一定要有中序遍历序列才能确定一颗二叉树前序序列:根节点首先出现中序序列:根节点在左子树的所有节点和右子树的所有节点中间出现例子:前序遍历序列:ADBCE中序遍历序列:BDCAEA是根节点->左子树包含:BDC右子树包含:E左子树前序序列:DBCD是根节点->左子树包含:B右子树包含:C关键在于通过前序/后序原创 2021-08-10 09:19:49 · 338 阅读 · 0 评论 -
二叉树的遍历
文章目录深度优先遍历先序遍历递归算法非递归算法中序遍历递归算法非递归算法后序遍历递归算法非递归算法广度优先遍历层次遍历深度优先遍历先序遍历递归算法void PreOrder(BiTree T){ if(T!= NULL){ visit(T); PreOrder(T -> lchild); PreOrder(T -> rchild); }}非递归算法中序遍历递归算法void MidOrder(BiTree T){ IF(T != NULL){ InOrde原创 2021-08-09 11:28:52 · 52 阅读 · 0 评论 -
KMP算法
//匹配算法int Index_KMP(SString S,SString T,int next[]){ //初始化游标,i为匹配游标,j为模式游标 int i = 1,j = 1; //以游标越界为条件循环 while(i <= S.length && j <= T.length){ //第一次循环时如果S.ch[1] == T.ch[1],则i=2,j=2,比较第二位. //S.ch[1] != T.ch[1],则j = 0;跳转到第二次循环;由判断条件j原创 2021-08-09 10:35:02 · 68 阅读 · 0 评论 -
串的存储结构
文章目录顺序存储静态存储(基于静态顺序存储)实现的基本操作动态存储链式存储顺序存储静态存储(基于静态顺序存储)实现的基本操作#define MAXLEN 255//预定串的最大长度位MAXLEN//静态存储typedef struct{ char ch[MAXLEN];//每个分量存储一个字符 int length;//字符串的实际长度(没有脏数据的有效信息)}SString;//求子串。用sub返回串S从pos起长度为len的子串bool SubString(SString S,S原创 2021-08-06 21:41:55 · 88 阅读 · 0 评论 -
串的基本操作
赋值操作StrAssgn(&T,chars):把串T赋值位chars复制操作StrCopy(&T,S):把串S复制得到TStrEmpty(S)StrLength(S)ClearString(S)DestroyString(S)Contact(&T,S1,S2):串联串SubString(&Sub,S,pos,len):求子串Index(S,T):定位,返回子串在主串中第一次出现的位置StrCompare(T,S):比较串的大小,T>S返回>.原创 2021-08-06 20:56:07 · 180 阅读 · 0 评论 -
二叉树的层次遍历
算法思想:初始化一个辅助队列根节点入队若队列非空,则队头节点出队,访问该节点,并将其左孩子右孩子节点依次入队(如果存在)重复第三步操作//二叉树节点typedef struct BiTNode{ char data; struct BiNode *lchild,*rchild;}BiTNode,*BiTree;//链式队列节点typedef struct LNode{ //数据项存储一个二叉树节点的地址 BitNode *data; struct LNode *next;原创 2021-08-06 20:42:28 · 72 阅读 · 0 评论 -
数据结构前三章(自由回忆)
数据结构的基本概念算法的基本概念算法的时间复杂度算法的空间复杂度线性表(逻辑结构)的定义和基本操作顺序表(存储结构:顺序存储)的定义和基本操作单链表(存储结构:链式存储)的定义和基本操作双链表的定义和基本操作循环链表的定义和基本操作静态链表的定义和基本操作链表和顺序表的比较栈的定义(逻辑结构:线性表)和基本操作顺序栈(存储结构:顺序存储)的定义和基本操作链栈(存储结构:链式存储)的定义和基本操作队列的定义(逻辑结构:线性表)和基本操作队列的顺序实现队列的链式实现双端队列(.原创 2021-07-21 20:49:46 · 350 阅读 · 0 评论 -
栈的应用——括号匹配;表达式求值;函数递归栈
栈的应用栈在括号匹配中的应用表达式求值中缀表达式转后缀表达式后缀表达式求值栈在括号匹配中的应用#define MaxSize 10typedef struct{ char data[MaxSize]; int top;}SqStack;//初始化栈void InitStack(SqStack &S);//进栈bool Push(SqStack &S,char s);//出栈bool Pop(SqStack &S,char &s);//判空bool原创 2021-07-20 20:44:30 · 210 阅读 · 0 评论 -
队列的定义(线性结构);顺序实现;链式实现;双端队列
队 列队列的基本概念定义基本操作队列的顺序实现队列的链式实现双端队列队列的基本概念定义线性表是具有相同数据类型的n个元素的有限序列,其中n是表长,当n = 0时线性表是一个空表。若用L命名线性表,则一般可以表示成L=(a1,a2,...,ai,ai+1,...,an)L = (a_1,a_2,...,a_i,a_{i+1},...,a_n)L=(a1,a2,...,ai,ai+1,...,an)栈(Stack)是只允许在一端进行插入或删除操作的线性表(进栈出栈)(FILO)队列(原创 2021-07-19 19:57:11 · 155 阅读 · 0 评论 -
栈的定义(线性结构);顺序存储实现;链式存储实现
栈定义重要术语基本操作线性表栈合法的出栈顺序组合数学结论合法性模拟法判判断顺序栈的实现顺序栈的定义顺序栈的操作初始化进栈共享栈定义线性表是具有相同数据类型的n个数据元素的有限序列,其中n是表长,当n=0时线性表是空表。若用L明明线性表,则一般表示为L=(a1,a2,...,ai,ai+1,...,an) L = (a_1,a_2,...,a_i,a_{i+1},...,a_n)L=(a1,a2,...,ai,ai+1,...,an)栈(Stack)是一种只允许在一端进行插入或删除操作原创 2021-07-17 21:49:25 · 330 阅读 · 0 评论 -
线性表(逻辑结构)--链表(存储结构)
链表单链表定义实现带头节点不带头节点基本操作的实现插入删除查找建立双链表循环链表静态链表顺序表和链表的比较单链表每个节点除去存放数据元素外,还需存储指向下一个节点的指针定义实现带头节点不带头节点基本操作的实现插入删除查找建立双链表循环链表静态链表顺序表和链表的比较...原创 2021-07-14 21:42:40 · 818 阅读 · 0 评论 -
线性表(逻辑结构)--顺序表(存储结构)
顺序表***!!做题的时候注意位序i和数组下标的区别!!***顺序表定义顺序表的实现静态分配动态分配顺序表特性顺序表的插入和删除插入实现时间复杂度删除实现时间复杂度!!做题的时候注意位序i和数组下标的区别!!顺序表定义顺序表:指用顺序存储的方式实现线性表顺序存储C语言:sizeof(ElementType)typedef struct{ int num; int people;}Customer;sizeof(Customer);sizeof(Customer) = 8B;顺序表的实原创 2021-07-12 21:47:24 · 1216 阅读 · 0 评论 -
线性表(逻辑结构)
线性表定义(逻辑结构)值得注意的特性重要术语基本运算创销、增删改查判空、判长、打印输出其它值得注意的点定义(逻辑结构)线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L表示线性表,则一般表示为 几个概念:a_i表示线性表中第i个元素的位序;(程序中下标从零开始)a_0表示线性表的表头元素; a_n表示线性表的表尾元素;除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继值得注意的特性数据元素同类型、原创 2021-07-12 19:01:41 · 1619 阅读 · 0 评论 -
数据结构——绪论
绪论数据结构的基本概念基本概念1. 数据2. 数据元素、数据项3.数据结构、数据对象4. 数据类型、抽象数据类型数据结构的三要素1. 逻辑结构2. 物理结构(存储结构)3. 数据的运算数据结构的基本概念基本概念1. 数据能输入到计算机中并被计算机所识别的数、字符、符号的集合。2. 数据元素、数据项数据元素是 数据的基本单位,可以由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。3.数据结构、数据对象结构–各个元素之间的关系数据结构-相互之间存在一种或多种关系的数据元素的集合数原创 2021-07-11 20:50:41 · 61 阅读 · 0 评论