数据结构
是阿俊呐
路很长,你只管走就是~
展开
-
八皇后--栈递归实现
该文主要为练习数据结构的栈结构,所以将会一步步实现栈结构后,再使用栈的基本功能,如建栈,出栈,入栈,而不是直接调用库函数原创 2018-11-10 16:30:09 · 1251 阅读 · 0 评论 -
实例图解平衡二叉树
2019/1/15 深夜好困呐~这周备考数据结构,复习平衡二叉树时发现网络上资源冗杂,好的例子讲解不多,于是在多方查找下,根据自己的理解制作了平衡二叉树的插入演示过程,昨天刚考完,嘿嘿嘿~怕拖延症把我抓走,于是在这月黑风高之时将其记录下来,以便分享给需要的朋友们,可以多花些时间学习有意义的东西能来到这相信你对平衡二叉树是啥已经知道了,直接看实例叭~...原创 2019-01-15 23:52:49 · 2840 阅读 · 0 评论 -
实例图解Dijkstra
2019/1/15关于Dijkstra算法的算法描述网络上太多了,在此就不赘述了,直接用一个实例讲解其算法执行过程该图解是考试前临时做的,有些粗糙,大家凑合看看,跟着手写一遍就理解了题目:求下图中v0到其余点的最短路径以下为具体执行过程初始化时v0的权值赋为0(便于后续编程实现路径查找),final赋为T在final为F的点中选出权值最小点v2,开始更新,将v2对应final...原创 2019-01-15 23:42:10 · 851 阅读 · 0 评论 -
单向链表的原地排序、去重、求交并集
12原创 2019-01-15 00:30:29 · 1217 阅读 · 1 评论 -
四类链表的创建、增删改查及其衍生关系
关系分析按照有无头结点,单双向,是否循环可分为八类链表,这里我们约定都有头结点为啥选择带头结点呢?因为简单呀~假设此时无头结点,现在要向链表插入一个结点,那么得考虑三种情况:1:插入头之前,2:插入尾之后,3:插入头尾之间若是此时带有头结点,那么第一种情况就退化成第三种情况,于是我们只需考虑两种情况即可,能省则省咯那么还剩下四类链表:单向链表,单向循环链表,双向链表,双向循环链表...原创 2019-01-07 17:23:08 · 593 阅读 · 3 评论 -
最小生成树--Kruskal(并查集应用)
嘿嘿嘿,小伙伴们,今天咱们来咬文嚼字,看看这最小生成树是个啥玩意有趣的问答Q1:树是啥?A1:树是连通无回路的图Q2: 连通我知道,就是任意两个点均可达,类似于向一个点注水,整个图都有水喝;无回路嘛,应该就是不存在圈。是这样叭??A2:真是个小机灵鬼儿哟,想不到你的理解已经如此深刻,其实呢,它还有一个隐含特性:边数比节点数少一,所以任意图想变成树,就得先控制边数,也就是毛线数只能为...原创 2019-01-06 18:01:59 · 889 阅读 · 0 评论 -
朋友圈--并查集应用
小引并查集是求解等价关系的得力助手,具体应用如求无向图连通分支数,至少还需几条路才能将一个城市串通,迷宫生成,克鲁斯卡尔算法求解最小生成树。它的听起来高大上,实际上却是极为简单的数据结构–森林并查集顾名思义是并、查集合的操作的实现关键在于一个数组father,该数组下标表示相应的点,值表示该点对应的双亲,初始化全为-1,表示每一个点都构成仅有一个结点且该结点为根的树,每次得到两个点的关系,利...原创 2019-01-06 16:14:07 · 893 阅读 · 7 评论 -
二叉树基本操作实现及总结(适合复习)
建立二叉树的方法有递归–前缀表达式;非递归–括号+逗号在此基础上可完成孩子兄弟链表的非递归构建数据结构typedef struct BTNode{ char data; struct BTNode *lchild,*rchild;}BTNode,*BTree;建二叉树前缀表达式(递归)//递归建树:仅前序成功?测试数据:ABD##EG###C#F##//后序:##D##G#E...原创 2019-01-01 23:20:50 · 4151 阅读 · 4 评论 -
邻接表实现有向图BFS、DFS、拓扑排序
图的大家族常用图的存储结构有两种:邻接矩阵,邻接表。一个数组,一个链表,可见复杂的数据结构是建立在基础结构之上的,在这里选择邻接表存储,边比较少时省空间。图按照有无方向,有无权重,分为四类无向无权:无向图无向有权:无向网有向无权:有向图有向有权:有向网可见带有权重称为网,否则称为图。图可以看成边权均为1,所以是特殊网。因此掌握了网,也就顺带会了图由于无向图均有对称性,所以大...原创 2019-01-10 20:54:08 · 5241 阅读 · 2 评论 -
实例图解哈夫曼树编码-解码及实现(c++)
hello everybody!你们机智大气的阿俊又回来了,最近事比较多,闲话少说,直接切入正题,聊聊如何给一篇全为英文字符的文章利用哈夫曼编码得到每个字符的最优编码,并完成解码功能,注意,这次也是用文件操作哟,今天可被二进制文件折磨惨了,不过搞懂后真好用,呜呜呜,我该不会是个受虐狂叭。。。需求分析嘿嘿嘿,不瞒你说,这是我课设的题目注意一下,测试数据一定是所有的字符一定是要英文输入法能...原创 2019-01-15 23:20:51 · 10529 阅读 · 5 评论 -
五类八个排序比较+实现+详细解释
原创 2018-12-25 15:35:11 · 1077 阅读 · 0 评论 -
二叉排序树基本功能实现(C++)
二叉排序树(Binary Sort Tree )也称二叉搜索树(Binary Search Tree),以下简称BST。它的特点是左小右大(左子树小于根,右子树大于根),令人困惑的是他不允许相等存在,一定要分个高低。这个特点与二叉堆排序有所不同,堆是允许存在相同关键字的,所以堆可用于任意排序;而BST建立后必定是一个无重复关键字的树,对其中序遍历,必为升序,这个过程等价于将一个链表去重后再排...原创 2019-01-03 23:51:41 · 3369 阅读 · 0 评论 -
简单易懂的迷宫走法--栈应用(c++)
哈喽~小伙伴们,你们帅气的阿俊又回来啦,他有好东西和你们分享哦,那就是困扰了他好久的迷宫问题。感觉自己走迷宫时简单得很,可让计算机走咋这么难哩,我明白了,一定是因为计算机太笨了,真是笨死了,啥都要人家一步步教他咋做,还想取代人?路漫漫其修远兮哦,嘿嘿嘿,那我们看看咋教他走迷宫吧!如果学习过数据结构或图论的小伙伴应该听过深度/广度优先搜索算法,这两个算法可是图论中大多数算法的基础,非常重要哦。...原创 2018-12-27 22:03:03 · 2692 阅读 · 4 评论 -
栈+队列的基本操作实现(严蔚敏版设计思路解读c++)
大家好,我是集美貌与才华于一身的阿俊呐,咳咳咳…不接受任何反驳,进入正题叭…biu~ biu~…这篇博客主要是我学完数据结构(严蔚敏版),想记录下来以后复习用。从零搭建起栈和队列的操作顺序动态栈和动态数组的关系(栈也可用链式结构实现,不过不常用)链式队列和链表的关系(队列也可用顺式结构实现,不过不常用)数组与链表的优缺点动态数组的数据结构//动态数组的数据结构 typed...原创 2018-12-27 15:37:24 · 1108 阅读 · 0 评论 -
实例图解表达式求解--栈的应用(C++)
程序使用范围1) 运算数为实数2) 运算符为+、-、*、/、(、)、#3) 运算结果为实数设计流程主要分为三步1,表达式预处理2,建立运算符优先表3,运算求值1) 表达式预处理从文件中读取一行,去除所有空格,并在表达式首尾各添加一个符号‘#’,表示(作为起止标记)//表达式预处理:从文件中读出表达式,同时去除所有空格、并在头尾各加一个字符‘#’ void InitExpre...原创 2018-12-26 19:44:50 · 1587 阅读 · 0 评论 -
实例图解关键路径及实现(C++)
2019/1/15 即将0点关键路径求解步骤1, 先正向拓扑排序求出点的最早开始时间:ve(取最大ve(j)=Max{ve(i)+dut(<i,j>)})2, 再逆向拓扑排序求出点的最迟开始时间:vl(取最小vl(i)=Min{vl(j)-dut(<i,j>)})3, 利用ve,vl求出边的最早开始时间e,最迟开始时间l4, e=l表示此边为关键路径中的边计...原创 2019-01-16 00:50:18 · 13997 阅读 · 2 评论