![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 84
Liaily
菜鸡一枚
展开
-
11.树与二叉树
1.树1.1树的基本概念空树:节点为0的树非空树:非空树的特性:有且只有一个根结点没有后继的结点称为“叶子结点”(或终端结点)有后继的结点称为“分支结点”(或非终端结点)除了根结点外,任何一个结点都只有一个前驱每个结点可以有0个或多个后继子树:根结点的后继结点互不相交,且自身往下又是一棵树,则把这个集合称为根结点的子树。树是一种递归定义的数据结构两个结点的路径:从前趋结点到后继结点的路线,只能从上往下,不能反着走路径长度:即路径经过了几条边,长度就为几结原创 2022-03-21 17:14:59 · 176 阅读 · 0 评论 -
10.串.
1.串的定义**串,即字符串(String)**是由零个或多个字符组成的有限序列。一般记为S = ‘a1a2…an’(n>=0)其中S是串名,单引号括起来的字符序列是串的值;ai可以是字母,数字或其他字符;串中字符的个数n称为串的长度。n=0时的串称为空串。例:S = “HelloWorld!”T = ‘Hello World!’有的语言用单引号,有的用双引号。子串:串中任意个连续的字符组成的子序列。(空串也是子串)例:‘Hello’,'World!'是串T的子串主串:包含子串的串原创 2022-03-19 16:10:19 · 232 阅读 · 0 评论 -
9.矩阵的压缩存储
1.一维数组的存储结构各数组元素大小相同,且物理上连续存放。数组元素a[i]的存放地址 = LOC + i * sizeof(Elem Type) (0<=i<=10)2.二维数组的存储结构起始地址:LOC为了把非线性的二维数组变成线性形状定义了两种存储原则:M行N列的二维数组b[M] [N]中,若按行优先存储,则b[i] [j] 的存储地址 = LOC + (i*N + j) * sizeof(ElemType),若按列优先存储,则b[i] [j] 的存原创 2022-03-18 18:58:37 · 860 阅读 · 0 评论 -
8.栈的应用
1.括号匹配问题用栈实现括号匹配:依次扫描所有字符,遇到左括号入栈,遇到右括号则弹出栈顶元素检查是否匹配。匹配失败情况:左括号单身右括号单身左右括号不匹配代码实现:#define MaxSize 10 //定义栈中元素的最大个数typedef struct{ char data[MaxSize]; //静态数组存放栈中元素 int top; //栈顶指针}SqStack; //定义顺序栈结构类型 bool bracketCheck(char str[]原创 2022-03-13 16:44:47 · 93 阅读 · 0 评论 -
7.队列.
1.队列的基本概念队列(Queue):是只允许在一端进行插入,在另一端删除的线性表重要术语:队头,队尾,空队列执行删除操作队列的特点:先进先出First In First Out(FIFO)2.队列的基本操作InitQueue(&Q):初始化队列,构造一个空队列Q。DestoryQueue(&Q):销毁队列。销毁并释放队列Q所占用的内存空间。EnQueue(&Q,x):入队,若队列Q未满,将x加入,使之成为新的队尾。DeQueue(&Q,&x)原创 2022-03-05 20:54:59 · 76 阅读 · 0 评论 -
6.栈..
1.栈的基本概念栈(Stack)是只允许在一端进行插入或删除操作的线性表逻辑结构:与普通线性表相同数据的运算:插入,删除操作有区别重要术语:栈顶,栈底,空栈进栈顺序:a1->a2->a3->a4->a5出栈顺序:a5->a4->a3->a2->a1特点:后进先出 Last In First Out (LIFO)2.栈的基本操作InitStack(&S):初始化栈。构造一个空栈S,分配内存空间。DestroyStack(&L原创 2022-03-04 19:12:40 · 106 阅读 · 0 评论 -
5.其他链表
1.双链表1.1定义双链表有两条链,一条由前趋指向后继,一条由后继指向前趋。多了一个指针域prior,其指向该结点的前趋结点。typedef struct DNode{ //定义双链表结点类型 ElemType data; //数据域 struct DNode *prior,*next;//前趋和后继指针}DNode, *DLinklist;初始化双链表(带头结点):此处的DLinklist和DNode是等价的,使用DLinklist是为了强调定义的是一个链表,使用DNod原创 2022-03-04 15:38:46 · 274 阅读 · 0 评论 -
4.单链表
1.链表的定义线性表的链式存储结构被称作链表链表中的结点在存储器上的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。线性表的链式表示又称为非顺序映像或链式映像链表用一组物理位置任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中元素的逻辑次序和物理次序不一定相同。各结点由两个域组成:(数据+指针)数据域:存储元素数值数据(当前结点的数值信息)指针域:存储直接后继结点的存储位置(原创 2022-03-03 16:55:08 · 812 阅读 · 0 评论 -
3.线性表
1.线性表的定义和特点线性表是具有相同特性的数据元素的一个有限序列线性表:由n(n>=0)个数据元素(结点)a1,a2,…an组成的有限序列。其中数据元素的个数n定义为表的长度当n=0时称为空表将非空的线性表(n>0)记作:(a1,a2,…an)这里的数据元素ai(1<=i<=n)只是一个抽象的符号,其具体含义在不同的情况下可以不同开始结点没有直接前趋,终端结点没有直接后继,其余结点都有一个直接前趋和一个直接后继同一线性表中的元素必定具有原创 2022-03-03 16:49:26 · 303 阅读 · 0 评论 -
2.算法.
1.算法1.1算法的定义 算法是对特定问题求解方法和步骤的一种描述,它是指令的有限序列。其中每个指令表示一个或多个操作。算法就是解决问题的方法和步骤。算法的描述:自然语言:中,英文流程图:传统流程图,NS流程图伪代码,类语言:类C语言程序代码:C语言程序,Java语言程序…算法与程序:算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法。程序是用某种程序设计语言对算法的具体实现。程序 = 数据结构 + 算法数据结构通过算法原创 2022-03-03 16:44:58 · 88 阅读 · 0 评论 -
1.基本概念
1. 线性关系,结构在一个学生信息管理系统中,有多条学生信息,每条学生信息都是被操作的对象,此时不同学生的信息之间就是线性关系。线性关系: 两个变量之间存在一次方函数关系,就称它们之间存在线性关系 ,其对应的数据结构为线性数据结构,线性表。非线性关系: 非线性是指两个变量间的数学关系,不是直线,而是曲线、曲面、或不确定的属性,是不成简单比例(线性)关系的。树形结构:即数据与数据成一对多的关系,是一种典型的非线性关系结构。网状结构:数据之间互相联系的关系,是一种典型的非线性关系结构。2.与数据相关原创 2022-03-03 16:43:34 · 1448 阅读 · 0 评论