![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
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 · 161 阅读 · 0 评论 -
二叉树的先序,中序,后序(递归、非递归版本)(一)
二叉树的结构typedef struct{ char val; struct Binode *lchild; struct Binode *rchild;}Binode;一、递归情况下实现示例:进行先序、中序、后序以及层次遍历#include<iostream>#include<queue>#include<stdli...原创 2019-02-28 20:28:46 · 132 阅读 · 0 评论 -
二叉树的先序,中序,后序(递归、非递归版本)(二)
上一篇中实现了递归的先序、中序、后序的遍历,这一篇将着重讲述非递归版本的遍历。中序非递归: 1、思想:使用栈,先对栈进行初始化,当栈不空时(刚开始进入循环,栈为空,所以增加条件根不为空时)沿着左孩子一直入栈,直至找到最左的那个节点。此时,先取栈顶元素,进行访问。再出栈,因为是中序遍历,所以最终将将其指针指向其右孩子。2、实现代码 void Mid_order_no...原创 2019-02-28 22:05:02 · 97 阅读 · 0 评论 -
二叉排序树相关知识
一、二叉排序树的定义二叉排序树或者是一棵空树,又或者是一棵具有如下性质的树:若左子树不为空,则左子树上所有节点的值小于根节点 若右子树不为空,则右子树上所有节点的值都大于根节点 其左右子树也满足该条件二、下面将阐述一下对于该二叉排序树的操作实现插入 查找 删除(1)插入操作若是空树,则直接进行插入,成为根节点若不为空树,则需要保证插入以后,仍为二叉排序树 若插...原创 2019-03-01 20:16:55 · 240 阅读 · 0 评论 -
图的遍历及应用--广度遍历、深度遍历、单源最短路径
图的遍历:指从图的某一顶点出发,按照某种搜索方法沿着图中的边,对所有节点访问一次且仅一次。图的遍历主要有两种算法:广度优先遍历和深度优先遍历这两种遍历算法,我在考研期间有复习过,所以现在写到博客上(算法的实现前提是都是基于图的邻接表的存储方式存储的)我们知道,通常图的存储方式有两种:邻接矩阵和邻接表,本篇中的存储方式则是基于邻接表的方式存储的。存储结构:typedef str...原创 2019-03-02 14:49:31 · 715 阅读 · 0 评论 -
堆排序的实现--建堆、调整、排序
堆排序是一种树形选择的排序算法,在排序过程中将数组看作是一棵完全二叉树。但其实它是顺序存储的结构,这里我们实现的是大根堆的建堆算法。堆排序:建大根堆-->输出堆顶元素(和堆底元素交换)-->整理将其重新整理成为堆(1)大根堆(堆顶元素大于或等于其对应的子节点)L[i]>=L[2*i] L[i]>=L[2*i+1](2)小根堆(堆顶元素小于或等于其对应的子节...原创 2019-03-02 15:36:05 · 929 阅读 · 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 · 165 阅读 · 0 评论