-
【数据结构】栈的实现
所属栏目:[安全] 日期:2020-12-15 热度:121
栈可以看做是链表的一种特殊形式,是在链表上加不同的约束条件实现的。 # include stdio.h# include malloc.h# include stdlib.htypedef struct Node{int data;struct Node * pNext;}NODE,*PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,* PS[详细]
-
【数据结构】链表相关内容
所属栏目:[安全] 日期:2020-12-15 热度:136
1. 写一个已序链表 题意理解:简单来看也就是说,在链表添加节点的时候就将元素添加到合适的位置,使得链表总是已序的。 #include iostream using namespace std; //定义节点的结构体 struct node{ int value; //节点数值 struct node * next; //下一个节点[详细]
-
【数据结构】二叉树的遍历
所属栏目:[安全] 日期:2020-12-15 热度:146
/* * 1.前序遍历的 递归实现和 非递归实现 * 2.中序遍历的 递归实现和 非递归实现 * 3.后序遍历的 递归实现和 非递归实现 * 4.根据两项遍历结果 重构树结构 */ #include iostream #include stdlib.h #include stack using namespace std ; struct BTreeNode{[详细]
-
【数据结构】绪论 总结
所属栏目:[安全] 日期:2020-12-15 热度:193
重点总结一下时间复杂度: 1.概念 一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记作T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度。算法的时[详细]
-
跳跃表 SkipList【数据结构】原理及实现
所属栏目:[安全] 日期:2020-12-15 热度:192
为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree,Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类[详细]
-
【1509】【数据结构】Windows Message Queue
所属栏目:[安全] 日期:2020-12-15 热度:165
#includeiostream #includequeue #includealgorithm #includecstring using namespace std; struct node { char name[1000]; int parameter; int priority; int num; //这里出错了。。。应该加个先后顺序排序。。。类似上次HDU做的队列里的一题, friend boo[详细]
-
【HDU 3328】【数据结构】Flipper
所属栏目:[安全] 日期:2020-12-15 热度:161
就是一个翻牌子的问题,写的略繁琐,因为只是实验室水题,所以不优化了,L是从最左翻面并且覆盖到第二堆上,以此类推,模拟就好。 [cpp] view plain copy print ? #include"stdio.h" #include"stack" #include"queue" using namespace std; int main( int ar[详细]
-
【PAT 】 【数据结构】列车厢调度
所属栏目:[安全] 日期:2020-12-15 热度:141
目录(?) [+] 1 ====== --移动方向 / 3 ===== 2 ====== --移动方向 大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下: 有三条平行的列车轨道[详细]
-
【数据结构】数据结构概览
所属栏目:[安全] 日期:2020-12-15 热度:177
【前言】 数据结构作为基础知识对于一个优秀的IT人的重要性不言而喻,但是许多朋友都感觉它的内容又难又多。下面我们力争用图的方式把各个零碎的知识点都关联起来,让我们一抓一大把。文章会随着我对数据结构学习的深入而不断更新。先来张总的。 【正文】 【[详细]
-
【数据结构】栈实现迷宫寻路问题
所属栏目:[安全] 日期:2020-12-15 热度:141
思路: 解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,所以需要用一个后进先出的结构来保存从入口到当前位置[详细]
-
【数据结构】判断出栈顺序的合法性
所属栏目:[安全] 日期:2020-12-15 热度:182
问题简单说明 给定一个栈的入栈顺序,再给定一个出栈顺序,通过程序判断出栈顺序的合法性。 思路如下: 定义一个空栈sc 先将str1中第一个元素入栈,然后通过循环使str1后移。 1、如果当前栈为空且入栈序列不为空,则入栈序列str1后移,sp入栈。 2、如果栈顶[详细]
-
【Dongle】【数据结构】【算法】求树的结点和叶节点个数
所属栏目:[安全] 日期:2020-12-15 热度:167
最近通过做数据结构试题,出现了很多求树的结点个数。下面总结一下求结点算法: 已知一课 度为 k 的树有 n1 个度为 1 的结点, n2 个度为 2 的结点, n3 个度为 3 的结点, … , nk 个度为 k 的结点。则求总结点和叶节点(度为 0 )个数 设共有N个结点,N-1[详细]
-
【数据结构】顺序表、单链表、循环链表的插入与删除
所属栏目:[安全] 日期:2020-12-15 热度:151
写在前面的 顺序表 插入 删除 定位 单链表 插入 删除 双向循环链表 删除 插入 总结 写在前面的 在复习数据结构的过程中对于链表的操作总是容易忘记,时不时的就不知道具体的该怎么操作了,所以把这几个比较细节的地方总结一下,让自己印象加深一下,给之后的[详细]
-
【数据结构】关于复杂链表的复制
所属栏目:[安全] 日期:2020-12-15 热度:55
复杂链表与单链表 首先呢,得告诉大家 【复杂链表】 和 【普通链表】 的一些区别 可是这个不怎么好描述 不过呢,我请来了 【 四个 小学生】 ,来帮助大家理解 小时候的小A、小B、小C和小D 我们有四个同学 A、B、C、D 他们 【高高兴兴】 的排起了队 他们依次[详细]
-
【数据结构】二叉树基础知识
所属栏目:[安全] 日期:2020-12-15 热度:95
总分支数 = 总结点数 - 1 叶子结点数 = 双分支结点数 + 1 前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 注意:知道前序和后序不能唯一确定一棵二叉树 二叉排序树定义: 1)若它的左子树不空,则左子树上所有的关键字的值均小于根关键字的值; 2)若[详细]
-
【数据结构】栈面试题--两个栈实现一个队列
所属栏目:[安全] 日期:2020-12-15 热度:101
首先我们必须清楚,栈先进后出,队列先进先出。这道他们各自的特点之后,我们用两个栈来实现一个队列。 下边给出图片: 下边给出代码: templatetypename Tclass Queue{public:void Push(const T x){if (!_s2.empty()){while (!_s2.empty()){_s1.push(_s2.to[详细]
-
【数据结构】栈面试题--两个队列实现一个栈
所属栏目:[安全] 日期:2020-12-15 热度:105
上篇文章写了用两个栈实现一个队列,这篇文章实现用两个队列实现一个栈,其实两者的思想都是差不多的。 下边继续画图说明: 下边给出实现代码: #includequeuetemplatetypename Tclass Stack{public:void Push(const T x){//q1,q2都为空,push进q1if (_q1.em[详细]
-
【数据结构】二叉树的简单遍历及基本操作
所属栏目:[安全] 日期:2020-12-15 热度:127
1、构造 2、拷贝构造 3、析构 4.深度 5、叶子数 6.前序遍历递归非递归 7、中序遍历递归非递归 8、中序遍历递归非递归 9、第k层子树 等 定义树节点结构体 struct BinTreeNode{BinTreeNode* left;BinTreeNode* right;T _date;BinTreeNode(const T x):left(NULL[详细]
-
【数据结构】二叉树的查找及第K行子树个数计算
所属栏目:[安全] 日期:2020-12-15 热度:110
上篇博客基本已经将二叉树的基本算法进行了简单介绍,这篇文章主要介绍二叉树中节点的查找及第K行子树个数 首先二叉树查找 需要用到递归算法 代码实现内部函数 Node* _Find(Node* root,const T x){if (root==NULL)return NULL;if(root-_date==x) return root[详细]
-
【数据结构】稀疏矩阵,对称矩阵
所属栏目:[安全] 日期:2020-12-15 热度:122
稀疏矩阵 在矩阵 中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵 #include iostream#includecstdlib#include vectorusing namespace std;templatetypename Tstruct Triple{T _value;size_t _row;size_t _col;Triple(T value,size_t[详细]
-
【数据结构】二叉树的递归实现
所属栏目:[安全] 日期:2020-12-15 热度:116
二叉树的概念,这里就不想多说了,但是你需要知道满二叉树,完全二叉树等等这些基本 概念,下边进入正题。 首先创建一棵二叉树,下边看代码: Node* _Create(T* a,size_t size,size_t index,const T invalid){assert(a);Node* root = NULL;while (index size[详细]
-
【数据结构】非递归遍历二叉树
所属栏目:[安全] 日期:2020-12-15 热度:95
由于递归时通过栈来实现的,虽然递归代码有时候看起来比较简单,然后递归太深就会造 成栈溢出。所以我们可以通过栈来实现二叉树的非递归遍历。下边看解析: 【先序遍历】 下边看实现代码: void PreOrderTraverseNonR(){stackNode* s;Node* cur = _root;if ([详细]
-
rw_《数据结构》 9-10章 [内部排序和查找]
所属栏目:[安全] 日期:2020-12-15 热度:73
2016.09.03 –09.07 [个人笔记,可能有错误] 以前胡乱折腾的关于排序或查找的笔记[这次也是]: [1] 再集查找与排序 [2] 内部排序算法实现(C) [3] 快速排序的层次改进 [4] 堆(数据结构)及堆排序 [5] 位图标记 二分查找 位二分 [6] 文件排序 09.03 1 内部排[详细]
-
【数据结构】——包围法遍历二叉树
所属栏目:[安全] 日期:2020-12-15 热度:76
【背景】 《数据结构导论》学习的第三阶段差不多要收尾了,做题的时候会突然发现,哦,原来是这样,当时觉得自己会了,等到后面再次遇到的时候,又不知道当时的思路了,看得出来这样的学习很肤浅,雨过地皮湿,从长远的角度来看的话,效果是很不好的,还是要[详细]
-
【数据结构】栈面试题--一个数组实现两个栈
所属栏目:[安全] 日期:2020-12-15 热度:198
一个数组实现两个栈,有以下几种方法: 1.数组的奇数位置存储一个栈的元素,偶数位置存储另一个栈的元素; 2.两个栈分别从数组的中间向两头增长; 3.两个栈分别从数组的两头开始增长。 从图片中我们都可以看出,前边两种方法再一定的情况下会造成空间的浪费[详细]