题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 首先要明确栈和队列的特性,栈是后入先出的数据类型,队列是先进先出的数据类型,那么就可以用两个栈,一个存储新的push进队列的数据,另一个栈用来pop出队头的数据,push很简单,直接利用栈的特性ap ...
分类:
其他好文 时间:
2018-08-30 02:03:42
阅读次数:
136
定义:普通队列遵循先进先出的原则,只能从尾部插入,从头部弹出。优先队列特性,队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,而是将当前队列中最大的元素出队。这点类似于给队列里的元素进行了由大到小的顺序排序。元素的比较规则默认按元素值由大到小排序,可以重载“<”操作符来重新定义比 ...
分类:
其他好文 时间:
2018-08-30 01:55:08
阅读次数:
136
队列是一种先进先出的数据结。队列只能在队尾插入元素,在队首删除元素,这点和栈不一样。它用于存储顺序排列的数据。队列就像我们日常中的排队一样,排在最前面的第一个办理业务,新来的人只能在后面排队。队列这种数据结构在编程中被用到很多地方。 定义队列的操作 上图展示了队列的两个操作,入队和出队。出队操作是删 ...
分类:
编程语言 时间:
2018-08-29 21:25:32
阅读次数:
282
deque:双端队列 底层是一个双向链表。 常用的有队列的尾部入队、首部出队。 摘自:http://www.cnblogs.com/liubilan/p/9461141.html deque - 双向队列 1.构造 无参构造: 带参构造: 2.头部&尾部的添加和删除 3.中间数据存取 4.元素插入 ...
分类:
其他好文 时间:
2018-08-29 14:19:17
阅读次数:
142
栈:先进后出(底层用数组实现) 栈只有一个开口,先进去的就到最底下,后进来的就在前面,要是拿出去的话,肯定是从开口端拿出去, 所以说先进后出,后进先出。 数据结构: java实现栈(基于数组): main()方法中 3是最后push()进去 是最先pop()出来,先进后出,后进先出。 队列:先进先出 ...
分类:
其他好文 时间:
2018-08-26 10:30:32
阅读次数:
261
拓扑排序:给一张有向无环图,求一个序列使得每一条边(x,y),x都出现在y之前 1.把所有预处理过的入度为0的节点加入队列中 2.每次取出队头,把队头加入答案序列尾部 3.把与队头相连的边的节点入度 -1,若减为0,加入队列 4.重复操作直至队列为空 若题目要求输出字典序最小或最大的拓扑排序 可以用 ...
分类:
编程语言 时间:
2018-08-24 20:40:53
阅读次数:
167
#define Max 250 #define INF 0x3f3f3f3f int map[Max][Max]; int max_flow(int num,int map[][Max],int source,int sink)//参数含义:结点数量 网络 源点 汇点 { int pre[Max], ...
分类:
其他好文 时间:
2018-08-23 15:43:48
阅读次数:
175
SPFA是一种单源最短路算法,与Dijkstra不同的是,他可以处理负边权,而且能判断负环。SPFA是Bellman算法的队列优化,在过程上和BFS有些类似。SPFA的算法流程大时这样的,先将源点加入队列中,只要队列不为空,取出队首元素,用他去更新与他相连的点的最短路,若成功更新且被更新的点不在队列 ...
分类:
编程语言 时间:
2018-08-20 23:49:56
阅读次数:
342
Dijkstra算法是用于求单源最短路的算法,也就是求出一个点到图上其他点的最短路,但是要求图中不能有负边权,时间复杂度为O(n2)。 算法思想是,先将源点的最短路置为0,每次取出已更新过最短路的点中,最短路最小的点,然后遍历与其相连的点,进行松弛操作(if(d[v]>d[u]+w<u,v> d[v ...
分类:
编程语言 时间:
2018-08-20 00:30:33
阅读次数:
176
题意:N个点,给出M条两个点u、v,满足u比值小。给这N个点编号,要求排在前的比排在后的质量小,且编号不重复。求每点能得到最小编号的编号方法。 分析:用拓扑排序求解。 用优先队列来存待标记的点,编号大的点优先出队列,然后从大到小依次标记(编号小的优先肯定是错的,当时wa死了)。 若求不出拓扑排序则答 ...
分类:
编程语言 时间:
2018-08-18 17:51:46
阅读次数:
151