栈和队列的对比

1.栈和队列的区别

栈是先进先出的数据结构中,有PUSH和POP两种操作,PUSH是把元素压入栈顶,POP是吧元素从栈顶弹出,TOP取栈顶元素。

栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。 从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同。但它们是完全不同的数据类型。除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定"。 栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出" 的规则进行操作。和线性表相比,它们的插入和删除操作受更多的约束和限定,故又称为限定性的线性表结构。

栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按"后进先出"的规则进行操作,而队列必须按"先进先出"的规则进行操作。

 https://www.cnblogs.com/csbdong/p/5677293.html

栈和队列的具体区别和代码实现参考上面的链接

2.队列和优先队列

1. 队列是先进后出的数据结构,c++中的主要使用方法是通过push输入队列,入队,pop输出队列,出队,通过size查看队列数目,通过front和back查看队列第一和最后一个元素。

#include<iostream>
#include<queue>
#include<algorithm>

using namespace std;
const int maxn = 5;
int main()
{
	queue<int> my_que;
	cout << "队列的数目:" << my_que.size() << endl;
	for (int i = 0; i < maxn; i++)
		my_que.push(i);
	for (int i = 0; !my_que.empty(); i++)
	{
		cout << "队列的数目:" << my_que.size() << endl;
		cout << "front:" << my_que.front() << "back:" << my_que.back() << endl;
		my_que.pop();
	}
	my_que.push(9);
	system("pause");
	return 0;
}

 运行结果:

 

2.优先队列

优先队列是有顺序排列的队列,会将入队的元素按照顺序排序输出。

//丑数是除了2,3,5之外不能被整除的数
//本程序使用队列和set来存储
#include<iostream>
#include<vector>
#include<queue>
#include<set>
using namespace std;
typedef long long LL;
const int maxn = 20;
const int coeff[3] = { 2,3,5 };

int main() {
	priority_queue<LL, vector<LL>, greater<LL> >pq;//优先队列 
	set<LL> s;//集合 
	LL a;
	pq.push(1);//队列插入1
	s.insert(1);//集合set不重复、按照顺序
	for (int i = 1;; i++) {
		LL x = pq.top();//弹出队列的队首元素
		cout << " the point x " << x << endl;
		pq.pop();
		if (i == maxn) {
			cout << "The maxn ugly number is " << x << ".\n";
			break;
		}
		for (int j = 0; j < 3; j++) {
			LL x2 = x * coeff[j];
			cout << " the x2 " << x2<< "the count is"<< s.count(x2) << endl;
			if (!s.count(x2)) {//如果丑数重复,不push,
				s.insert(x2);
				cout << " the x2_1 " << x2 << endl;
				pq.push(x2);
				cout << " the x2_2 " << x2 << endl;
			}
		}
	}
	system("pause");
	return 0;
}

 程序结果:

猜你喜欢

转载自blog.csdn.net/weixin_41440777/article/details/85009687
今日推荐