
数据结构
文章平均质量分 96
珞喻小森林
华中科技大学人工智能与自动化学院 图像所
展开
-
图-邻接矩阵(二维数组)存储结构下的 深度优先遍历与广度优先遍历,求树的两个节点的最近公共祖先(LCA)
/*题目描述有下面一个图图的各个顶点之间只有唯一的道路相连,而且任顶点都是可以互达的,解答要求时间限制:1000ms, 内存限制:64MB输入每个样例输入:第一行两个正整数N,Q,图有N个顶点,有Q个询问。其中1 <= N,Q <= 100第二行到第N行,每行三个整数u,v,z,表示顶点u到顶点v的距离为z,表示顶点u与顶点v相连,边的权值为z。其中 1 &l...原创 2020-04-28 18:43:58 · 1696 阅读 · 0 评论 -
【算法】有序数组 二分查找,有序数组循环移动后的 二分查找
0.有序数组的二分查找/* 在升序数组arr[]中查找key,如果key存在,则返回其在数组中的位置index,否则返回 -1。*/int BinarySearch(int arr[],int arr_size, int key){ if (arr == NULL) { return -1; } int low = 0; int high = arr_size - ...原创 2020-03-18 11:13:03 · 776 阅读 · 0 评论 -
求一个集合的幂集:回溯法与树的遍历
目录0.回溯法1.问题1.1求集合的幂集1.2在一个集合中求组合2.求幂集3.参考0.回溯法 回溯法与树的遍历: 程序设计中,有一类求一组解、求全部解或求最优解的问题,例如八皇后问题, 不是根据某种确定的计算法则,而是利用试探和回溯(Backtracking)的搜索技术来求解的。 回溯法也是设计递归过程的一种重要方法,其求解过程实...原创 2019-10-06 22:01:18 · 1217 阅读 · 0 评论 -
二叉搜索树(二叉排序树)BST与双向列表的转换
目录 1.二叉排序树(Binary Sort Tree)1.0 BST树存储结构 1.1BST查找1.2BST树插入节点1.3中序遍历BST树得到有序序列1.4删除BST树上的一结点1.5二叉排序树内存的释放_后序遍历删除每一个结点1.6二叉树的后序遍历_非递归算法2.将BST转换成双向列表2.1BST转换成双向列表测试:3.BST转双向列表变种题...原创 2018-09-12 16:03:42 · 702 阅读 · 0 评论 -
常见缓存算法和LRU_C++实现
0.题目:设计一个数据结构实现LRU缓存设计一个数据结构,实现LRU Cache(Least recently used) 功能。支持get和set操作:int get(int key);//如果key存在则返回key对应的value值,如果key不存在,则返回-1,(假设所有value>=0)void set(int key,int value);//如果key不存在,则插...转载 2018-09-15 16:41:05 · 290 阅读 · 0 评论 -
【面试现场】如何实现可以获取最小值的栈?
出处:https://mp.weixin.qq.com/s/q5wtEXg_tC-wlyK1uMlJJA小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT。今天他又去BAT中的一家面试了。简单的自我介绍后,面试官给了小史一个问题:如何实现可以获取最小值的栈?(在基础数据结构的基础上添油加醋,构造新的数据结构或操作方法)!基础数据结...原创 2018-09-08 20:53:59 · 770 阅读 · 0 评论 -
排序_内存排序
目录0.各种排序算法对比1.冒泡排序2.选择排序3.直接插入排序4.Shell排序(缩小增量插入排序)5.归并排序6.快速排序7.堆排序和优先队列7.1堆排序7.1.1初始建堆7.1.2 输出堆顶后调整为新堆7.2利用建立堆实现一优先队列0.各种排序算法对比1.冒泡排序//冒泡排序,平均时间O(n^2),最好O(n),最坏O(...原创 2018-09-08 19:59:59 · 1845 阅读 · 0 评论 -
回溯法_树的遍历_N皇后问题_幂集合问题_有多少种解码方式的问题_遍历状态树_分叉(选择)有限的情况
目录 1.回溯法2.求集合的幂集3.N皇后问题3.1N后问题递归3.2N皇后问题(循环)4.编程题:有多少种解码方式(求解组合数问题)5.待补充:1.回溯法程序设计中,有一类求解一组解、求解全部解、或求解最优解的问题。如8皇后问题(N皇后问题)这类问题不是根据某种确定的计算法则去运算,而是每次都利用试探和回溯(Backtracking)的搜索技术进行求解...原创 2018-09-05 16:30:36 · 1122 阅读 · 0 评论 -
基于图的遍历的DFS_BFS:求有向图的中的所有路径;标记无向图中的各个连通分量
目录:1.有向图、无向图:邻接链表存储结构2.标记无向图中的各个连通分量3.求有向图的中的所有路径 标记无向图中的各个连通分量连通分量的标记一般在无向图中进行:1.会图的存储结构之邻接链表2.有向图和无向图的邻接链表存储结构(会将有向图的邻接链表存储转成无向图的邻接链表存储:补充一下双向存储即可!) 问题:会求无向图的各个连通分量,即将G3的各个...原创 2018-08-25 18:44:00 · 8473 阅读 · 0 评论 -
有向图_拓扑排序_AOE关键路径_判断图中是否存在环
目录0.图——判环0.1.1无向图判断是否存在环0.1.2有向图判断是否存在环0.2无向图判环0.3有向图判环1.有向图的拓扑排序2.关键路径 2.1.邻接链表存储AOE网 2.1.1拓扑排序: bool TopologicalOrder():2.1.2关键路径:bool CriticalPath()求关键路径的完整代码与测试用例:无向图、有向图判环...原创 2018-08-31 19:02:55 · 6146 阅读 · 0 评论 -
有向网_最短路径_Dijkstra算法_Flody算法
目录1.求有向网的最短路径_Dijkstra算法_单源点最短路径问题1.1建立有向网的邻接矩阵存储结构:1.2Dijkstra算法2.Flody算法:求有向网没对顶点之间的最短路径1.求有向网的最短路径_Dijkstra算法_单源点最短路径问题Dijkstra算法的关键思想:按路径长度递增的次序产生最短路径 :下面的代码使用Final[]数组来体现按路径长度递增的...原创 2018-08-31 17:25:05 · 3456 阅读 · 0 评论 -
图的连通性问题之最小生成树:Prim算法_Kruskal算法(
目录 0.构造连通网的最小代价生成树(Minimun Cost Spanning Tree),简称最小生成树。1.求UDN的最小生成树Prim算法2.Kruscal算法2.1树的存储结构之双亲表示法2.2树与等价问题:集合的树型结构表示:查找某个元素属于哪一个子集,合并两个非空子集;等价类划分2.3求UDN的最小生成树之Kruscal算法小结:1.Prim算法使...原创 2018-08-28 21:08:55 · 5222 阅读 · 0 评论 -
二叉树_二叉链表存储_前中后遍历_栈:递归非递归遍历_队列:按层遍历
目录:1.二叉树的存储结构之二叉链表1.1以先序序列输入二叉树中结点的值,并构建该二叉树!2.遍历二叉树2.1前、中、后序的递归遍历算法2.2前、中、后序的非递归遍历算法(栈)2.3按层遍历二叉树(队列) 1.二叉树的存储结构之二叉链表1.1以先序序列输入二叉树中结点的值,并构建该二叉树!/*二叉树的结点存储结构,二叉链表存储结构*/t...原创 2018-08-23 16:16:17 · 1145 阅读 · 0 评论 -
有向图_十字链表存储结构_深度优先遍历_求有向图的强连通分量
目录0.小结 基于遍历地求无向图的连通分量和求有向图的强连通分量1.有向图的十字链表存储结构2.有向图的正向(顺箭头)深度优先遍历:递归的退出:最后完成搜索的顶点求有向图的强连通分量的步骤1:3.有向图的逆向(逆箭头)深度优先遍历:求有向图的强连通分量。求有向图的强连通分量的步骤2:概念:在有向图G中,如果对于每一对v1,vj属于V,vi不等于vj,从vi到vj和从vj...原创 2018-08-27 16:57:18 · 1213 阅读 · 1 评论 -
图_邻接表_图的深度优先遍历DFS_找到图中的所有路径_图的广度优先遍历BFS一编程小栗子
目录:1.有向图2.图的存储结构之邻接表3.图的遍历-深度优先搜索遍历DFS:Depth First Search3.1图的遍历-广度优先搜索遍历BFS:Breadth First Search3.2深度优先遍历和广度优先遍历实现代码4.DFS的一应用小例子注意:图的遍历与找到图中的所有路径虽然是不同的问题,但只要稍微改变一下DFS深度优先遍历算法,即可完美解决找到图中...原创 2018-08-19 15:13:27 · 4910 阅读 · 0 评论