SqQueue.h
#define MAXQSIZE 100
typedef int QElemType;
typedef struct{
QElemType base[MAXQSIZE];
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue &Q);
int QueueLength(SqQueue Q);
void EnQueue(SqQueue &Q,QElemType e);
void DeQueue(SqQueue &Q,QElemType &e);
SqQueue.cpp
// SqQueue.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "SqQueue.h"
#include <iostream>
using namespace std;
void InitQueue(SqQueue &Q){
Q.front = Q.rear = 0;
}
int QueueLength(SqQueue Q){
return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;
}
void EnQueue(SqQueue &Q,QElemType e){
//队列满,约定少用一个元素空间,当队列头指针在尾指针的下一位置上为队列满
if ((Q.rear + 1) % MAXQSIZE == Q.front)
{
cout<<"queue full";
return;
}
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1)%MAXQSIZE;
}
void DeQueue(SqQueue &Q,QElemType &e){
//队列为空
if (Q.front == Q.rear)
{
cout<<"queue empty";
return;
}
e = Q.base[Q.front];
Q.front = (Q.front + 1) %MAXQSIZE;
}
int main(int argc, char* argv[])
{
SqQueue Q;
InitQueue(Q);
QElemType e;
for (int i = 0; i<5;i++)
{
cin>>e;
EnQueue(Q,e);
}
cout<<"queue length : "<<QueueLength(Q)<<endl;
QElemType returnValue;
while(QueueLength(Q)!=0){
DeQueue(Q,returnValue);
cout<<returnValue<<" ";
}
return 0;
}