您的位置:首页 > 理论基础 > 数据结构算法

数据结构-->(循环)队列 【队列的顺序实现】ADT

2016-07-09 22:04 495 查看
#define ERROR 0
#define OK 1
#define MAXQSIZE 200
//!注意栈是没有头结点的
typedef int QElemType;
typedef struct
{
QElemType *base;
int Front;
int Rear;
}SqQueue;


bool InitQueue(SqQueue &Q)
{//队列的初始化
Q.base = new QElemType[MAXQSIZE];
if(!Q.base) return ERROR;
Q.Front = Q.Rear = 0;
return OK;
}


bool QueueLength(SqQueue Q)
{//返回队列长度
return (Q.Rear - Q.Front + MAXQSIZE)%MAXQSIZE;
}


bool EnQueue(SqQueue &Q,QElemType e)
{//注意是从下标0开始存放的
if(Q.Front == (Q.Rear+1)%MAXQSIZE) return ERROR;//队满
Q.base[Q.Rear] = e;
Q.Rear = (Q.Rear+1)%MAXQSIZE;
return OK;
}


bool DeQueue(SqQueue &Q,QElemType &e)
{//删除队首
if(Q.Front==Q.Rear) return ERROR;
e = Q.base[Q.Front];
Q.Front = (Q.Front+1)%MAXQSIZE;
return OK;
}


QElemType GetHead(SqQueue Q)
{//取队首
if(Q.Front!=Q.Rear)
return Q.base[Q.Front];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: