
数据结构
YYin0914
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
常用排序算法
常用的七大排序算法如下: 1、直接插入排序 void insert_Sort(int *a,int n){ for(int i=0;i<n;i++){ //key:a[i] int temp=a[i];//temp在这里相当于哨兵的作用 int j; for(j=i-1;temp<a[j];j--) {//从后向前寻找插入的位置,边找边后移 ...原创 2019-02-24 21:17:20 · 215 阅读 · 0 评论 -
二叉树的先序,中序,后序(递归、非递归版本)(一)
二叉树的结构 typedef struct{ char val; struct Binode *lchild; struct Binode *rchild; }Binode; 一、递归情况下实现 示例:进行先序、中序、后序以及层次遍历 #include<iostream> #include<queue> #include<stdli...原创 2019-02-28 20:28:46 · 163 阅读 · 0 评论 -
二叉树的先序,中序,后序(递归、非递归版本)(二)
上一篇中实现了递归的先序、中序、后序的遍历,这一篇将着重讲述非递归版本的遍历。 中序非递归: 1、思想: 使用栈,先对栈进行初始化,当栈不空时(刚开始进入循环,栈为空,所以增加条件根不为空时)沿着左孩子一直入栈,直至找到最左的那个节点。 此时,先取栈顶元素,进行访问。再出栈,因为是中序遍历,所以最终将将其指针指向其右孩子。 2、实现代码 void Mid_order_no...原创 2019-02-28 22:05:02 · 146 阅读 · 0 评论 -
二叉排序树相关知识
一、二叉排序树的定义 二叉排序树或者是一棵空树,又或者是一棵具有如下性质的树: 若左子树不为空,则左子树上所有节点的值小于根节点 若右子树不为空,则右子树上所有节点的值都大于根节点 其左右子树也满足该条件 二、下面将阐述一下对于该二叉排序树的操作实现 插入 查找 删除 (1)插入操作 若是空树,则直接进行插入,成为根节点 若不为空树,则需要保证插入以后,仍为二叉排序树 若插...原创 2019-03-01 20:16:55 · 279 阅读 · 0 评论 -
图的遍历及应用--广度遍历、深度遍历、单源最短路径
图的遍历:指从图的某一顶点出发,按照某种搜索方法沿着图中的边,对所有节点访问一次且仅一次。 图的遍历主要有两种算法:广度优先遍历和深度优先遍历 这两种遍历算法,我在考研期间有复习过,所以现在写到博客上(算法的实现前提是都是基于图的邻接表的存储方式存储的) 我们知道,通常图的存储方式有两种:邻接矩阵和邻接表,本篇中的存储方式则是基于邻接表的方式存储的。 存储结构: typedef str...原创 2019-03-02 14:49:31 · 773 阅读 · 0 评论 -
堆排序的实现--建堆、调整、排序
堆排序是一种树形选择的排序算法,在排序过程中将数组看作是一棵完全二叉树。但其实它是顺序存储的结构,这里我们实现的是大根堆的建堆算法。 堆排序:建大根堆-->输出堆顶元素(和堆底元素交换)-->整理将其重新整理成为堆 (1)大根堆(堆顶元素大于或等于其对应的子节点) L[i]>=L[2*i] L[i]>=L[2*i+1] (2)小根堆(堆顶元素小于或等于其对应的子节...原创 2019-03-02 15:36:05 · 1080 阅读 · 0 评论 -
栈与队列的相互转换实现
一、使用两个栈实现一个队列(栈s1,s2) 入队操作:入栈操作,count+1; 出队操作:s1出栈,入栈s2,出栈s2 具体实现代码: #include<iostream> #include<stack> using namespace std; //利用两个栈实现一个队列 template<class T> class MyQue{ private...原创 2019-03-02 18:08:39 · 205 阅读 · 0 评论