顺序存储循环队列
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "iostream"
#define OK 1;
#define ERROR 0;
#define MAXSIZE 5
typedef int QElemType;
//链表的顺序存储结构
typedef struct {
QElemType data[MAXSIZE];
int front;
int rear;
}SqQueue;
//初始化一个队列
QElemType InitQueue(SqQueue* Q) {
Q->front = 0;
Q->rear = 0;
return OK;
}
//返回队列Q的元素个数,也就是队列长度
QElemType QueueLength(SqQueue* Q) {
return ((Q->rear - Q->front )% MAXSIZE);
}
//循环队列入队操作
QElemType EnQueue(SqQueue* Q, QElemType e) {
//判断队列满
if ((Q->rear + 1) % MAXSIZE == Q->front)return ERROR;
//赋值e到队尾
Q->data[Q->rear] = e;
//rear指针向后移一位置
//若到最后则转到数组头部
Q->rear = (Q->rear + 1) % MAXSIZE;
return OK;
}
//循环队列出队操作
QElemType DeQueue(SqQueue* Q, QElemType* e) {
//判断队列空
if (Q->front == Q->rear) {
return ERROR;
}
//赋值
*e = Q->data[Q->front];
//front指针向后移一位置
//若到最后则返回数组头部
Q->front = (Q->front + 1) % MAXSIZE;
return OK;
}
int main()
{
return 0;
}
C++ queue函数用法
要使用queue,应先添加头文件#include,并在头文件下面加上using namespace std;
1.queue的定义:
typename可以是任意基本数据类型或容器:
queue<typename>name;
2 queue容器内元素的访问:
由于队列( queue)本身就是一种先进先出的限制性数据结构,因此在STL中只能通过
front()来访问队首元素
back()来访问队尾元素
3.queue常用函数实例解析:
(1)push()
将x压入队列
(2)front()
获得队首元素
(3) back()
获得队尾元素
(4)pop()
令队首元素出队
(5)empty()
检测是否为空,返回true则为空,返回false则非空size()
(6)size()
返回queue内元素的个数
使用front()、back()和pop()函数前,必须用empty()判断队列是否为空,否则可能因为队空而出现错误。