
数据结构
文章平均质量分 51
使用C语言实现数据结构
CRAJA
这个作者很懒,什么都没留下…
展开
-
[Go]马踏棋盘贪心优化
对8行8列的马踏棋盘的求解(栈模拟递归)package mainimport ( "fmt" "sort")const ( //棋盘规格 ROW = 8 COL = 8)type Stack struct { x, y int direction int //当前方向下标 nextIndex []NextIndex //之后的位置坐标}type NextIndex struct { //方便排序用 nx, ny int weight int原创 2021-09-17 22:50:11 · 178 阅读 · 0 评论 -
[C语言]图的总结
文章目录图各种图定义图的顶点与边间关系连通图的相关术语图的存储结构图的遍历最小生成树最短路径拓扑排序关键路径总结图定义: 由顶点的有穷非空集合和顶点之间的边的集合组成,表示为:G(V,E),其中,G表示一个图,V表示顶点集合,E表示边的集合注:顶点集合不能为空,边集为空各种图定义无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),可用无序偶对表示为:(Vi,Vj)若图中任意两个顶点之间的边都是无向边,则称该图为无向图.G = (V,{E})V = {A,B,C,原创 2021-04-23 17:08:34 · 1431 阅读 · 3 评论 -
[C语言]哈夫曼树的基本操作
哈夫曼树概念结构体构建空堆判空判满向下调整以及构建最小堆插入数值删除并返回最小值哈夫曼树的构建计算WPL效果图全部代码概念路径长度:从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上分支的数目称为路径长度.树的路径长度:从树根到每一节点的路径长度之和这个树的路径长度就是16节点的带权路径长度: 从该节点到树根之间的路径长度与节点上权的乘积树的带权路径长度(WPL): 树的每个叶子节点的带权路径之和以上图为例这棵树的WPL就是3*5+15*3+40*2+30*2+10*2原创 2021-04-11 16:30:35 · 837 阅读 · 0 评论 -
[C语言]二叉搜索树
目录结构体二叉搜索树的插入(创建)查找值查找最小值和最大值删除单个节点遍历全部代码效果图结构体这个和普通的二叉树一样的typedef struct BiTNode{ DataType data; //数值 struct BiTNode* lchild; //左孩子 struct BiTNode* rchild; //右孩子 int flag; //非递归遍历时可能会使用到} BiTNode,*BiTree; //搜索树结构体 二叉搜索树的插入(创建)这个相当于创建了原创 2021-04-09 17:51:01 · 281 阅读 · 0 评论 -
[C语言]完全二叉树的应用-堆
此处构建的是最大堆结构体创建空堆判空判满为堆中插入数值向下调整满足最大堆删除并返回堆中最大值堆排完整代码效果图结构体typedef int Type;//自定义类型typedef struct HNode//堆结构体{ Type *data;//存放堆的数组 int NowSize;//目前堆的大小 int MaxSize; //最大容量} HNode;创建空堆HNode *CreatHeap()//创建一个空堆{ HNode *H = (HNode*)malloc(sizeof原创 2021-04-08 15:08:18 · 202 阅读 · 0 评论 -
[C语言]中缀表达式转后缀表达式
中缀转后缀原创 2021-04-01 17:33:13 · 274 阅读 · 0 评论 -
[C语言]二叉树十分相似的先中后非递归遍历方法
根据原理进行的遍历方法前言:用C++的库函数写C1.准备环节(头文件和结构体):2.创建二叉树并初始化标记点3.三种遍历方式前言:用C++的库函数写C完整的二叉树基本功能请看我的上一篇文章,文中介绍了二叉树的基本的几种递归操作以及每种遍历方式的三种写法因为C++向C兼容,所以我们可以直接用C++运行C的代码,所以我们可以在C的代码里用C++的库函数(太爽了!!! )不过我们还得加上这句语句using namespace std;然后就可以开始搞事情了!看看这两个C++库函数的使用方式(C原创 2021-03-31 19:38:57 · 193 阅读 · 0 评论 -
[C语言]二叉树基本操作的实现
二叉树的基本功能实现原创 2021-03-27 17:48:38 · 871 阅读 · 0 评论 -
[c语言]静态数组
这个东西感觉比链表要难实现多了…大概实现了下(会有些BUG…)大概思路就是在一个数组里将空间分配为数值空间和备用空间,从备用空间中malloc空间来放数值/*静态链表是针对于没有指针的语言来描述单链表的*//*采用 数值空间 和 备用空间 来实现*/#include<stdio.h>#include<windows.h>#include<conio.h>#define MaxSize 22 //最大空间[记得两个空间放备用空间和数值空间的头] typed原创 2021-03-22 20:20:20 · 942 阅读 · 0 评论 -
[C语言]KMP
看了好久这个东西,也理解了好久,虽然能敲出来,不过它的思维还是感觉理解不到位,继续努力理解,记录下来防止以后忘了#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 50void GetNext(int *next,char *T){ int len = strlen(T); next[1] = 0; int i = 1,j = 0;//i表示当前后缀字符,j表示前缀字符 w原创 2021-03-20 21:32:06 · 105 阅读 · 0 评论 -
[C语言]链表队列空间
队列的入队,出队,判空,展示,清空等操作相关的解释都在代码注释中#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>/*队列: 头向尾移动减少数据,尾移动增加数据*/ typedef int Type;//自定义类型 typedef struct _Que//队列空间 { Type data; struct _Que *next;}Que,*Que原创 2021-03-17 23:19:52 · 192 阅读 · 0 评论 -
[C语言]链栈以及后缀表达式
#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>typedef int Type; //自定义类型 typedef struct _Stack{ Type data;//保存值 struct _Stack *next;//指向下一个 }Stack,*StackPtr;/*这里一个Stack里有一个值和一个指向下一个Stack的原创 2021-03-16 19:51:44 · 398 阅读 · 0 评论