博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于栈和队列随想
阅读量:6236 次
发布时间:2019-06-22

本文共 583 字,大约阅读时间需要 1 分钟。

1 在算法中栈和队列的地位

在算法中,栈和队列就是一个缓存,缓存那些对自己还有用的元素,还不用扔掉的元素。

比如对图的深度优先搜索,搜到某一层时,还只是访问了该元素的一个邻接节点时,是不能随便扔出栈的,因为可能它还有其它的邻接节点,首先它自己肯定是已经被访问了的,但是如果把它扔了,它的其它邻接节点也就被扔了,所以,只有当它的所有的邻接节点也被访问了的时候才可以把它扔掉。

 一般情况下,图的深度优先遍历用的是递归,boost graph library中用的就是递归来实现的。不要对递归有偏见,不要对递归的函数调用有偏见,

2 对图进行遍历的时候,如何标记栈中的元素已经被访问的邻接节点和未被访问的邻接节点

 图中的每个节点都是有一个label的,并且该label是唯一的,所以,可以弄一个hash表,访问过了的就是true,没有访问的就是false。缺点就是如果用邻接表表示图的话,每次都要遍历一下每个表。

3 邻接表盒邻接矩阵比较

当边比较多的时候,比如满边的时候,用邻接矩阵比较好,因为空间占用上二者一样,但是,邻接矩阵找起邻接关系来更快。

当边比较少的时候,比如没有边的时候,用邻接表会比较好,因为邻接矩阵会有很多空的地方,浪费空间,而邻接表就非常节省空间了。

转载于:https://www.cnblogs.com/hustdc/p/7912019.html

你可能感兴趣的文章
Java学习笔记七:Java的流程控制语句之switch
查看>>
JavaScript DOM2
查看>>
第二次冲刺9
查看>>
突然所有命令都不能用了, /usr/bin不在path里 .bashrc文件
查看>>
E - Leading and Trailing
查看>>
(转)认识Android手机--来自MIUI
查看>>
安卓安装完应用后,如何获取包的meta-inf目录下的文件?
查看>>
二维数组
查看>>
二叉搜索树与双向链表 【微软面试100题 第一题】
查看>>
判断时间大小,数值大小
查看>>
any、some、all for sql
查看>>
这就是传说中横扫江湖独霸武林的杀人于无形的"大切糕"
查看>>
leetcode148. Sort List
查看>>
limits.conf文件修改注意事项
查看>>
Spring4面向切面AOP
查看>>
ajax之async属性
查看>>
XML 语法规则
查看>>
sed
查看>>
一个java小程序,盗取插入的U盘中的数据。
查看>>
整合注意事项
查看>>