在写 “广度优先遍历” 的时候,要注意一点:所有加入队列的结点,都应该马上被标记为 “已经访问”,否则有可能会被重复加入队列。 如果等到队列出队的时候才标记 “已经访问”,事实上,这种做法是错误的。因为如果不在刚刚入队列的时候标记 “已经访问”,相同的结点很可能会重复入队 from queue im ...
分类:
其他好文 时间:
2020-02-08 00:49:47
阅读次数:
79
单调栈、单调队列及优先队列 [TOC] 1.单调队列 单调队列的描述:指队列中元素之间关系具有单调性,而且队首和队尾都可以出队,但是只有队尾可以进行入队操作。 其重要作用是找到前n个后者后n个数的最值。 其具体操作是:假设单调队列是单调递减队列,假设在插入元素v时,将队列尾部的元素同v比较,如果队列 ...
分类:
其他好文 时间:
2020-02-02 23:24:07
阅读次数:
75
堆排序算法。堆堆又被称为优先队列。按照元素的优先级取出元素。普通队列:先进先出;后进后出优先队列:出队顺序和入队顺序无关;和优先级相关在优先队列的内部,元素的次序却是由”优先级”来决定的:高优先级的元素排在队首,而低优先级的元素排在后面。优先队列入队操作比较复杂,需要将元素根据优先级尽量排到队列前面... ...
分类:
编程语言 时间:
2020-01-29 12:12:14
阅读次数:
94
在上一篇文章中我们讲了线性表,并介绍了线性表的两种实现也就是顺序表与链表,这篇文章我们来介绍一下队列这种数据结构。 不论是队列还是栈,都是对线性表进行一些操作上的限制,队列是从尾进从头出的,也就是先进先出。 队列也有两种实现的方式,顺序队列与链队列。 顺序队列 顺序队列就是利用顺序存储结构实现的队列 ...
分类:
其他好文 时间:
2020-01-28 19:38:06
阅读次数:
103
广度优先搜索(Breadth First Search, BFS) BFS算法实现的一般思路为: // BFS void BFS(int s){ queue<int> q; // 定义一个队列 q.push(s); // 队首元素入队 while (!q.empty()){ // 取出队首元素top ...
分类:
其他好文 时间:
2020-01-27 18:50:43
阅读次数:
68
spfa 有负边时使用 复杂度可以被卡到nm(坑:怎么卡?) 判负环(一个点入队了n次) djkstra 每次走最短的路 有负边时不能使用 每次出队一个点(logn),更新点的所有边(均摊m),所以(n+m)logn 没有负边求最短路不要作死用spfa。。。 ...
分类:
其他好文 时间:
2020-01-27 11:08:53
阅读次数:
67
栈:后进先出; 队列:先进先出 U?ェ?*U不多废话 直接上正文啦 #include <iostream> using namespace std; struct Node { int data; Node* next; }; class Stack { private: Node* head; N ...
分类:
其他好文 时间:
2020-01-22 21:38:11
阅读次数:
89
普通的队列仅有 EnQueue 和 DeQueue 两种操作,分别表示在队尾增加元素和取出队首元素。现在给队列增加一种新的操作 DeleteMid,表示删除队列的中间元素。对于有 N 个元素的队列,若 N 为偶数,中间元素定义为从队首到队尾的第 N/2 个元素;若 N 为奇数,中间元素定义为第 (N ...
分类:
其他好文 时间:
2020-01-20 00:28:16
阅读次数:
116
priority_queue<int> q;//默认优先级队列的定义。 在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。 #include <iostream> #include <vector> #include <queue> using namespace std; ...
分类:
编程语言 时间:
2020-01-17 22:40:55
阅读次数:
77
一、Java线程的调度方法: 1、同优先级线程组成先进先出队列(先到先服务),使用时间片策略。2、对高优先级,使用优先调度的抢占式策略。 二、Java线程的优先级: 1、线程的优先级等级MAX_ PRIORITY: 10、 MIN_ PRIORITY: 1、 NORM PRIORITY: 52、涉及 ...
分类:
编程语言 时间:
2020-01-16 21:43:11
阅读次数:
124