数据结构
文章平均质量分 78
wintershii
越努力越幸运
展开
-
数据结构—线性表
数据结构—线性表的实现昨天开始看《大话数据结构》中的线性表章节,根据物理结构大概分为两种:顺序存储结构和链式存储结构 其中顺序结构用数组来实现,在链式存储结构中又 分为 静态链表和动态链表 其中静态链表也是用数组所实现的,再具体还能分成 单链表,循环链表,双向链表,其中单链表在我之前的博客中已经提到过,就不再赘述了,下面 我大概介绍 线性表中的 顺序存储结构,静态链表,和双向循环链表。...原创 2018-05-08 20:50:23 · 241 阅读 · 0 评论 -
数据结构—栈
数据结构—三种结构的栈的实现昨天学习了数据结构中的栈,其实说白了,栈和队列都是对插入和删除数据元素有具体要求的线性表,所以在掌握了前面的线性表的知识后,很容易就可以理解这种数据结构的实现模式。栈:是限定仅在表尾进行插入和删除操作的线性表。其过程可以理解为网页的打开与后退,当你打开一个网页时,这是你最新打开的界面,显示在最上层,这里其实就类似于插入的操作。但当你要后退到上一个网页时,...原创 2018-05-10 17:52:07 · 374 阅读 · 0 评论 -
数据结构—队列
数据结构—循环队列与链队列我们上一节已经提到过 栈和队列都是对插入和删除数据元素有具体要求的线性表这一节我们就要介绍另一种数据结构:队列。队列:是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。我们还是先举个例子,其实队列在我们的平时生活中最长见,食堂里排队打饭,后来的肯定是站在队伍最后,然后前面的人打好饭之后再离开;不可能后来的人站在最前面,这样就没人...原创 2018-05-10 22:41:01 · 328 阅读 · 0 评论 -
Java—应用栈结构实现计算器
Java—应用栈结构实现计算器我们在小学学数学的时候,老师总是强调:先乘除,后加减,从左算到右,先括号内后括号外,这个都大家都不陌生。但我们的计算机又怎么记住这些规则呢?答案是不行的,但是我们可以把我们的表达式表示成一种计算机可以识别的表达式,这就是要说的后缀(逆波兰)表达式1.后缀表达式的计算例如:9+(3-1)3+10/2 这样的式子,用后缀表达式是这样的:9 3 1...原创 2018-08-14 11:12:09 · 6503 阅读 · 3 评论 -
数据结构—二叉树的建立与三种遍历方法
数据结构—二叉树的建立与三种遍历方法在知道了树这样的数据结构之后,我们知道其实有很多种方法可以表示树的结构,比如双亲表示法,孩子表示法,兄弟表示法等等。但是对于我们平时最常用的数据结构——二叉树,我们该如何在计算机上建立其数据结构呢?1.二叉树的建立看下面的这幅图片,我们现在要建立这样一个二叉树,我们的思路大致是这样:从根节点开始建立,然后先从做节点开始,把它也当成一...原创 2018-08-15 11:13:29 · 865 阅读 · 0 评论 -
数据结构—线索二叉树
数据结构—线索二叉树1.二叉链表中空间资源的浪费我们利用节点建立了二叉链表,但是我们发现二叉链表中存在这许多空指针,那么这部分空间就被浪费了,我们应该想办法解决这个问题假设有一个节点个数为n的二叉链表,那么其中就有2n个指针域,n个节点就会有n-1个分支线树,也就是说就会有2n-(n-1)=n+1个空指针域。如上图,十个节点的二叉树就会有十一个空指针域。我们在上一篇...原创 2018-08-15 16:15:10 · 1465 阅读 · 0 评论 -
数据结构—二叉树的前中后序非递归遍历及层序遍历
数据结构—二叉树的前中后序非递归遍历及层序遍历之前已经写过一篇关于二叉树的文章,当时是用C语言实现了二叉树的建立以及前中后序递归遍历.递归有一个好处就是:实现代码非常简单,也容易看懂.但很多情况先,递归所消耗的资源是与其他方式相比是比较大的,所以几天就来说一下二叉树前中后序遍历的非递归写法(java实现)1.节点的数据结构:class TreeNode { private ...原创 2018-12-08 17:19:25 · 360 阅读 · 0 评论 -
数据结构—哈夫曼编码
数据结构—哈夫曼编码1.哈夫曼树简介哈夫曼(Huffman)编码算法是基于二叉树构建编码压缩结构的,它是数据压缩中经典的一种算法。算法根据文本字符出现的频率,重新对字符进行编码。因为为了缩短编码的长度,我们自然希望频率越高的词,编码越短,这样最终才能最大化压缩存储文本数据的空间。我们使用二叉树来构建哈夫曼树并生成哈夫曼编码. 实际上,哈夫曼树构造的过程就是最优二叉树的构建过程.例如:如果{a...原创 2018-12-08 19:52:12 · 12654 阅读 · 1 评论