数据结构
文章平均质量分 60
Ken_Li_Lsq
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
重学数据结构:三对角矩阵公式推导过程
文章目录三对角矩阵概念公式推导过程(下标为1的情况)三对角矩阵概念公式推导过程(下标为1的情况)k=2i+j-3推导过程:当i=1时,只有两个元素。当i=2~i-1时,每一行都有三个元素。在最后的i行,有j-i+1个元素。*k= 2+(i-1-2+1)3 + (j-i+1)= 2i+j-3i=(k+1)/3+1,j=k-2i+3推导过程:ijk11012121222323432533634原创 2021-04-21 15:13:48 · 10094 阅读 · 5 评论 -
重学数据结构:循环队列(C语言)
文章目录循环队列的概念循环队列的存储溢出问题(满,空)及解决方案循环队列的代码实现循环队列的代码实现测试循环队列的代码实现测试结果循环队列的概念将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。循环队列的存储溢出问题(满,空)及解决方案问题描述:循环队列都会有队列的头指针和尾指针,而且循环队列一般用数组来定义长度,也就是说长度是有限的,头指针一般原创 2021-04-20 16:35:29 · 408 阅读 · 0 评论 -
重学数据结构:树的层序遍历(C语言)
文章目录树的层序遍历层序遍历代码测试代码测试结果其他用到的代码树的层序遍历顾名思义,就是一层一层的输出内容。要实现这个功能,需要用到我们之前学到的队列的相关操作。以二叉树为例,,根节点先输出,遍历所有节点,把当前节点的左右子节点也加入队列,若当前列队不为空,则输出队头节点,并获取对头节点的左右子节点加入队列,直到队列为空。层序遍历代码//层序遍历bool LevelOrder(BiTree tree){ if(tree==NULL) return false; LinkQueue *原创 2021-02-25 16:54:39 · 596 阅读 · 1 评论 -
重学数据结构:树的遍历:前序、中序和后序(C语言)
文章目录树的存储结构树的遍历前序遍历中序遍历后序遍历代码三种遍历的作用树的存储结构typedef struct BiNode{ int data; struct BiNode *left,*right;}BiNode,* BiTree;树的遍历用以下二叉树作为例子,便于演示和理解。void InitTree(BiTree &root){ root=(BiTree)malloc(sizeof(BiNode)); root->left=(BiNode原创 2021-02-23 17:15:05 · 449 阅读 · 0 评论 -
重学数据结构:树的定义、性质
文章目录树的定义树的性质节点数=度数+1度为m的树和m叉树的关系度为m的树第i层最多有mi-1个节点高度为h的m叉树最多的节点有(等差数列求和=m0+m1+m2+......+mh)高度为h的m叉树至少有h个节点高度为h且度为m的树至少有树的定义树的性质节点数=度数+1度为m的树和m叉树的关系度为m的树m叉树定义树的所有节点相同点不同点1不同点2度为m的树第i层最多有mi-1个节点高度为h的m叉树最多的节点有(等差原创 2021-02-09 10:17:42 · 530 阅读 · 0 评论 -
重学数据结构:串的匹配算法(C语言)
文章目录朴素模式匹配算法测试代码测试结果KMP算法求模式串的Next数组KMP算法优化求模式串的NextVal数组朴素模式匹配算法算法描述:定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S中第一次出现的位置;否则函数值为0。算法思想:就是把比較主串字符串一位一位地跟模式字符串相比,比较简单粗暴。算法缺点:当某些子串与模式串能部分匹配时,主串的扫描指针 i 经常回溯,导致时间开销增加//朴素匹配算法int SimpleIndex(String S,String T){ in原创 2021-02-01 11:34:49 · 416 阅读 · 8 评论 -
重学数据结构:串的基本操作(C语言)
串的结构赋值操作StrAssign(&T,chars):赋值操作。把串T赋值为chars。赋值操作StrCopy(&T,S):复制操作。由串S复制得到串T。StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回FALSE。StrLength(S):求串长。返回串S的元素个数。ClearString(&S):清空操作。将S清为空串。DestroyString(&S):销毁串。将串S销毁(回收存储空间)。Concat(&T,S1,S2):原创 2021-01-26 10:58:05 · 5201 阅读 · 1 评论 -
重学数据结构:栈的应用-逆波兰表达式(C语言)
表达式求值波兰表示法(Polish notation,或波兰记法),是一种逻辑、算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称做前缀表示法。如果操作符的元数(arity)是固定的,则语法上不需要括号仍然能被无歧义地解析。波兰记法是波兰数学家扬·武卡谢维奇1920年代引入的,用于简化命题逻辑。“ 扬·武卡谢维奇本人提到:我在1924年突然有了一个无需括号的表达方法,我在文章第一次使用了这种表示法。 ”—— Łukasiewicz(1), p. 610, footnote.阿隆佐·邱原创 2020-12-28 23:17:04 · 470 阅读 · 0 评论 -
重学数据结构:栈的应用-括号匹配(C语言)
文章目录栈的数据结构栈初始化判断栈空判断栈满获取栈顶元素压栈退栈判断元素是否在数组中左右括号匹配括号匹配测试数据测试结果栈的数据结构typedef struct{ int top; char *data;}SqStack;栈初始化void InitStack(SqStack *S){ S->top=-1; S->data=new char[MaxSize-1]; for(int i=0;i<MaxSize-1;i++) {原创 2020-12-28 13:07:58 · 380 阅读 · 0 评论 -
重学数据结构:队列的链式实现的各种操作(C语言)
文章目录队列的链式定义队列的链式实现分类有头节点的链式队列链式队列初始化(有头节点)判断队空(有头节点)链式队列的创建(有头节点)打印链式队列(有头节点)入队(有头节点)出队(有头节点)获取队头元素(有头节点)无头节点的链式队列链式队列初始化(无头节点)链式队列的创建(无头节点)打印链式队列(无头节点)入队(无头节点)出队(无头节点)获取队头元素(无头节点)队列的链式定义队列的链式实现分类分为有头节点和无头节点有头节点的链式队列链式队列初始化(有头节点)判断队空(有头节点)链式队列的创建(有头原创 2020-12-24 23:14:13 · 554 阅读 · 0 评论 -
重学数据结构:队列的顺序实现的各种操作(C语言)
文章目录队列的顺序实现定义队列初始化判断队满判断队空创建队列打印队列入队退队测试代码测试结果队列的顺序实现定义队列的定义和顺序表、顺序栈其实差不多,只不过有两个变量来记录队列头,尾,操作不尽相同,队列只能在尾部插入,头部退列typedef struct { int data[MaxSize]; int front,rear; //队头队尾}SqQueue;队列初始化void InitSqQueue(SqQueue *Q){ Q->front=0; Q->re原创 2020-12-22 16:32:34 · 248 阅读 · 0 评论 -
重学数据结构:链栈的各种操作(C语言)
链栈的定义其实跟链表的结构是一样的,连同操作基本一样,但是链栈只能在一端进行删除节点和增加节点.typedef struct LNode{ struct LNode *next; int data; int maxsize;}LNode,* LinkStack;头插法建立链表(带头节点)LinkStack link_HeadInsert(){ LinkStack head=(LinkStack)malloc(sizeof(LinkStack)); head->n原创 2020-12-22 11:42:35 · 271 阅读 · 0 评论 -
重学数据结构:顺序栈的各种操作(C语言)
顺序栈的定义#define MaxSize 50#define bool int#define true 1#define false 0;typedef struct{ int top; int data[MaxSize];}SqStack;判断栈空bool IsEmpty(SqStack S){ if(S.top==-1) return true; else return false;}判断栈满boo原创 2020-12-21 21:16:07 · 246 阅读 · 0 评论 -
重学数据结构:静态链表的各种操作(C语言)
静态链表定义#include <stdio.h>#include <string.h>#define maxSize 50typedef struct{ int index; int data;}StaticLink[maxSize];初始化链表void InitStaticLink(StaticLink L){ L[0].index=-1; for (int i=1; i<maxSize; i++) {原创 2020-12-18 22:12:42 · 227 阅读 · 2 评论 -
重学数据结构:循环链表的各种操作(C语言)
循环单链表定义其实这里定义的结构跟单链表的没什么区别,只不过在初始化或操作数据的时候,要把next指针指向链表的头指针。#define bool int#define true 1#define false 0typedef struct LNode{ struct LNode *next; int data;}LNode,*ScLinkList;初始化void InitList(ScLinkList L){ L=(LNode *)malloc(sizeof(LN原创 2020-12-17 19:38:01 · 256 阅读 · 0 评论 -
重学数据结构:双向链表的各种操作(C语言)
双向链表定义#define bool int#define true 1#define false 0typedef struct DLNode{ struct DLNode *next; struct DLNode *prior; int data;}DLNode,*DLinkList;初始化双向链表(前插值)DLinkList InitDLinkList(DLinkList L){ L=(DLinkList)malloc(sizeof(DLinkL原创 2020-12-16 22:43:47 · 231 阅读 · 0 评论 -
重学数据结构:顺序表的各种操作(C语言)
顺序表(静态)的定义#define MaxSize 50typedef struct{ int array[MaxSize];int length; //数组当前长度}SeqList;初始化数组void InitList(SeqList *L){for(int i=0;i<MaxSize;i++){ L->array[i]=0;}L->length=0;}打印数组内容void PrintList(SeqList L){ for原创 2020-12-16 17:07:28 · 244 阅读 · 0 评论 -
重学数据结构:单链表的各种操作(C语言)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以原创 2020-12-16 16:04:40 · 393 阅读 · 0 评论
分享