Queue队列容器:
1)容器适配器,遵循先进先出(FIFO)数据结构。 2)头文件:#include <queue> 3)常用函数: queue<int>q; q.empty()// 如果队列为空返回true,否则返回false q.size() // 返回队列中元素的个数 q.pop() //删除队列首元素但不返回其值 q.front() // 返回队首元素的值,但不删除该元素 q.push(X) //在队尾压入新元素 ,X为要压入的元素 q.back() //返回队列尾元素的值,但不删除该元素
例子:
#include<queue> #include<iostream> using namespace std; int main() { queue<int>Q; int a[] = { 3,5,17,9,30,15,2,4 }; int l = sizeof(a) / sizeof(int); for (int i = 0; i < l; i++) { Q.push(a[i]);//入队 } cout << Q.back() << endl;//输出队尾元素 cout << Q.front() << endl;//输出队首元素 cout << Q.size() << endl;//输出队列的长度 Q.pop();//出队,注意此函数并不返回任何值 //输出队列中的所有元素 while (!Q.empty) { cout << Q.front() << " "; Q.pop(); } //清空队列 while (!Q.empty) { Q.pop(); } return 0; }
数据结构实现:
//队列:队首出,队尾进(先进先出表) #include<iostream> using namespace std; const int MAXN = 1000 + 5; struct Queue { int *queue; int front; int rear; int len; }; //初始化队列 void InitQueue(Queue& Q) { Q.queue = new int[MAXN]; Q.front = Q.rear = 0; Q.len = 0; } //入队 void InsertQueue(Queue& Q, int item) { Q.rear = (Q.rear + 1) % MAXN; Q.queue[Q.rear] = item; Q.len++; } //清空队列 void ClearQueue(Queue& Q) { if (Q.queue != NULL) delete[] Q.queue; Q.front = Q.rear = 0; Q.queue = NULL; Q.len = 0; } //出队 void PopQueue(Queue& Q) { Q.front = (Q.front + 1) % MAXN; Q.len--; } //求队首元素 int PeekQueue(Queue Q) { return Q.queue[(Q.front + 1) % MAXN]; } //判断队列是否为空 bool EmptyQueue(Queue Q) { return Q.front == Q.rear; } int main() { Queue Q; InitQueue(Q); int a[] = { 2,4,5,6,7,9,10,3 }; int l = sizeof(a) / sizeof(int); for (int i = 0; i < l; i++) { InsertQueue(Q, a[i]); } cout << Q.len << endl;//输出队列的长度 cout << PeekQueue(Q) << endl;//查看队首元素 PopQueue(Q);//删除队首元素 PopQueue(Q);//删除队首元素 //依次输出队列的元素 while (!EmptyQueue(Q)) { cout << PeekQueue(Q) << " "; PopQueue(Q); } ClearQueue(Q);//清空队列 return 0; }