【数据结构】队列—基本操作
一、C++实例分析
C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。
那么我们如何判断队列是空队列还是已满呢?
a、栈空: 队首标志=队尾标志时,表示栈空。
b、栈满 : 队尾+1 = 队首时,表示栈满。
使用标准库的队列时, 应包含相关头文件,在栈中应包含头文件: #include< queue> 。定义:queue< int > q;
q.empty() 如果队列为空返回true,否则返回false q.size() 返回队列中元素的个数 q.pop() 删除队列首元素但不返回其值 q.front() 返回队首元素的值,但不删除该元素 q.push() 在队尾压入新元素 q.back() 返回队列尾元素的值,但不删除该元素
示例1
#include <queue> #include <iostream> using namespace std; int main(){ queue<int> q; //方式1: // for (int i = 0; i < 10; i++){ // q.push(i); // } //方式2: int x; while(cin>>x) q.push(x); if (!q.empty()){ cout << "队列的大小是:" << q.size() << endl; } return 0; }
示例2:
#include <queue> #include <iostream> using namespace std; int main(){ queue<int> q; //方式1: // for (int i = 0; i < 10; i++){ // q.push(i); // } //方式2: int x; while(cin>>x) q.push(x); cout<<"队头元素"<<q.front()<<endl; cout<<"队尾元素"<<q.back()<<endl; return 0; }
效果:
示例3:
#include <queue> #include <iostream> using namespace std; int main(){ queue<int> q; int x; while(cin>>x) q.push(x); //出队列 while(!q.empty()) { cout<<q.front()<<" "; q.pop(); } return 0; }
效果