#include<iostream>#include<stdlib.h>using namespace std;
#define OK 1#define ERROR -1#define OVERFLOW -2
typedef int Status;typedef int QElemType;#define MAXSIZE 100 // 最大长度
/*------------静态分配------------*///typedef struct {// QElemType elem[MAXSIZE];// QElemType* rear; // 队尾指针// QElemType* front; // 队头指针// int length; // 长度//}SqQueue;
/*------------动态分配------------*/typedef struct { QElemType* elem; // 动态分配存储空间初始化 int rear; // 尾指针 int front; // 头指针}SqQueue;
// 构造空队列Status InitSqQueue(SqQueue& Q) { Q.elem = new QElemType[MAXSIZE]; if (!Q.elem) exit(OVERFLOW); Q.front = Q.rear = 0; return OK;
}
// 队列长度int QueueLength(SqQueue Q) { return(Q.rear - Q.front) % MAXSIZE;}
// 判断队列是否为空bool IsSqQueueEmpty(SqQueue Q) { return Q.rear == Q.front;}
// 判断队列是否满bool IsSqQueueFull(SqQueue Q) { return (Q.rear + 1) % MAXSIZE == Q.front;}
// 入队Status PushSqQueue(SqQueue& Q, QElemType e) { if (IsSqQueueFull(Q)) return ERROR; Q.elem[Q.rear] = e; Q.rear = (Q.rear + 1) % MAXSIZE; return OK;}
// 出队Status PopSqQueue(SqQueue& Q, QElemType &e) { if (IsSqQueueEmpty(Q)) return ERROR; e = Q.elem[Q.front]; Q.front = (Q.front + 1) % MAXSIZE; return OK;}
// 创建队列void CreatSqQueue(SqQueue& Q, int m) { QElemType e; for (int i = 1; i <= m; i++) { cout << "请输入第" << i << "个元素的值: "; cin >> e; PushSqQueue(Q, e); }}
// 输出队列void OutPut(SqQueue Q) { int i; i = Q.front; while (i != Q.rear) { cout << Q.elem[i] << " "; i = (i + 1) % MAXSIZE; } cout << endl;}
int main(){ // 测试代码 SqQueue Q; QElemType e; int m; InitSqQueue(Q); cout << "请输入队列的长度: "; cin >> m; CreatSqQueue(Q, m); OutPut(Q);
cout << "队列的长度为: " << QueueLength(Q) << endl;
cout << "请输入入队元素: "; cin >> e; PushSqQueue(Q, e); cout << "队列元素为: "; OutPut(Q); cout << "队列的长度为: " << QueueLength(Q) << endl;
PopSqQueue(Q, e); cout << "出队元素为: " << e << endl; cout << "队列元素为: "; OutPut(Q); cout << "队列的长度为: " << QueueLength(Q) << endl;
return 0;}
评论