数据结构
DZ小明
__飘摇在星空的一颗星辰
__静摆在怒浪的一叶扁舟
展开
-
中缀表达式转后缀表达式并输出计算结果
后缀表达式又称逆波兰表达式,明显的特点是:逆波兰表达式中没有括号,计算时将操作符之前的第一个数作为右操作数,第二个数作为左操作数,进行计算,得到的值继续放入逆波兰表达式中。 但日常生活中我们总是习惯于写中缀表达式,所以需要先将中缀表达式转为后缀表达式。 假如中缀表达式为:12*(3+4)-6+8/2 在遇到数字时,我们直接输出,遇到符号,则入栈。但在入栈时,我们要判断栈内已有原创 2017-04-20 13:42:22 · 20366 阅读 · 16 评论 -
AVL(平衡)树的旋转
在二叉搜索树中,可能会存在几种特别的情况,即左单支、右单支之类的情况,这样的情况在二叉搜索树中查询某个节点代表的内容时,依旧会达到O(N)的时间复杂度,而不能按预期达到O(lgN)的时间复杂度。 所以在树中旋转树的结构,将树调整为一个满足条件的树–AVLTree(平衡树),即右子树的高度减去左子树的高度的绝对值小于2。为了达到AVL树,有四种基本情况,所以对应四种旋转方式,左单旋,右单旋,右左原创 2017-05-21 21:38:17 · 595 阅读 · 0 评论 -
矩阵之对称矩阵的压缩存储及访问和还原
在矩阵层次上,有几个矩阵时很特殊的。这篇文章是主要讲述对称矩阵的压缩存储、访问和还原的。 首先,何为对称矩阵? 首先,对称矩阵是一个二维数组,也是一个方阵。它的行列对应的列列行的数据相等,即arr[i][j]==arr[j][i];如下: 那么我们在存储时还存储一个5*5的的二维数组是不是有点浪费空间了。既然存在arr[i][j]==arr[j][i]这个规律,何不妨只存储原创 2017-04-24 17:09:40 · 3228 阅读 · 0 评论 -
稀疏矩阵的访问、普通逆置和快速逆置、还原输出以及加法
首先稀疏矩阵的概念: 在一个矩阵中(并不要求为方阵)无效元素的个数远远大于有效元素的个数,我们称之为——稀疏矩阵。一般没有一个明确的界限分开稀疏矩阵和普通矩阵,不过一些人认为:有效元素的个数/无效元素的个数<0.05即可称之为稀疏矩阵。 跟对称矩阵压缩存储的逻辑相似:我们只需存储稀疏矩阵的有限元素就行,但有效元素的位置并没有什么规律,所以在存储时还要存储相应元素的行、列的下标。 可原创 2017-04-25 10:30:55 · 967 阅读 · 0 评论 -
线索二叉树的前、中、后序创建和遍历
#pragma once#include <iostream>#include <string>using namespace std;enum NodeFlag { LINK, THREAD };template <typename T>struct BinaryTreeNodeThd{ BinaryTreeNodeThd(const T& data) : _data(原创 2017-05-07 13:29:32 · 466 阅读 · 1 评论 -
二叉树的实现及相关函数的实现
#include <iostream>#include <queue>#include <stack>using namespace std;template<typename T>struct BinaryNode //__默认构造函数__{ BinaryNode() : _pData(0) , _pLeftChild(NULL) , _pRightCh原创 2017-05-04 20:55:58 · 816 阅读 · 0 评论