数据结构 循环队列 c语言实现
初始状态是头指针尾指针指向同一个地址。
#include <iostream>
using namespace std;
#define MAXQSIZE 100
typedef bool Status;
typedef int QElemType;
typedef struct {
QElemType * base;
int front;
int rear;
}SqQueue;
//初始化队列
Status InitQueue(SqQueue & Q){
Q.base = (QElemType *)malloc(sizeof(QElemType));
if(!Q.base) return false;
Q.front = Q.rear = 0;
return true;
}
//入队
Status EnQueue(SqQueue & Q, QElemType e ){
//对列已经满了
if((Q.rear+1)% MAXQSIZE == Q.front) return false;
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXQSIZE;
return true;
}
//出队
Status DeQueue(SqQueue & Q, QElemType & e){
if(Q.rear==Q.front) return false;
e =Q.base[Q.front];
Q.front = (Q.front+1)%MAXQSIZE;
return true;
}
//队列长度
int QueueLenth(SqQueue & Q){
//返回Q元素的个数
return (Q.rear - Q.front + MAXQSIZE)% MAXQSIZE;
}
int main(int argc, char** argv) {
// SqQueue Q;
// QElemType e;
// InitQueue(Q);
// EnQueue(Q,1);
// EnQueue(Q,2);
// EnQueue(Q,3);
// DeQueue(Q,e);
// cout<<e<<endl;
// DeQueue(Q,e);
// cout<<e<<endl;
// DeQueue(Q,e);
// cout<<e<<endl;
}