// circular queue.cpp : Defines the entry point for the console application.
/*-----CODE FOR FUN---------------
-------CREATED BY Dream_Whui--
-------2015-1-25--------------------*/
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define INFEASIBLE -1
#define MAXQSIZE 100
#define QElemType char //定义队列元素的类型
typedef struct SqQueue//定义循环队列的结构
{
QElemType *base;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue &Q)//初始化循环队列
{
Q.base = (QElemType*)malloc(MAXQSIZE * sizeof(QElemType));
if(!Q.base)
return ERROR;
Q.front = Q.rear = 0;
return OK;
}
int QueueLength(SqQueue &Q)//循环队列的长度
{
return (Q.rear - Q.front)%MAXQSIZE;
}
int InsertQueue(SqQueue &Q, QElemType e)//在对尾插入元素
{
if((Q.rear+1)%MAXQSIZE == Q.front)
return ERROR;
Q.base[Q.rear] = e;
Q.rear = (Q.rear+1)%MAXQSIZE;
return OK;
}
int DeleteQueue(SqQueue &Q, QElemType &e)//在对头删除元素
{
if(Q.front == Q.rear)
return ERROR;
e = Q.base[Q.front];
Q.front = (Q.front+1)%MAXQSIZE;
return OK;
}
int main(int argc, char* argv[])
{
SqQueue Q;
InitQueue(Q);
InsertQueue(Q,'Q');
InsertQueue(Q,'D');
InsertQueue(Q,'F');
InsertQueue(Q,'G');
cout<<QueueLength(Q)<<endl;
int k = Q.front;
while(k != Q.rear)
{
cout<<Q.base[k]<<" ";
k++;
}
cout<<endl;
char e;
DeleteQueue(Q,e);
k = Q.front;
while(k != Q.rear)
{
cout<<Q.base[k]<<" ";
k++;
}
cout<<endl;
return 0;
}
数据结构--循环队列
最新推荐文章于 2022-08-17 12:41:59 发布