#include<stdio.h>
#define MAXQSIZE 10
typedef int QElemType;
typedef int Status;
//顺序队列 (循环队列,有一个空间不用)
typedef struct{
QElemType *base;
int rear;
int front;
}SqQueue;
//初始化队列
Status InitQueue(SqQueue &Q){
Q.base=new QElemType[MAXQSIZE];
//或 Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType))
if(!Q.base) return 0;
Q.rear=Q.front=0;
return 0;
}
//求队列的长度
int QueueLength(SqQueue Q) {
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队
Status EnQueue(SqQueue &Q,QElemType &e){
if((Q.rear+1)%MAXQSIZE==Q.front ){//队满
return 0;
}
else{
Q.base[Q.rear] =e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return 1;
}
}
//出队
Status DeQueue(SqQueue &Q,QElemType &e) {
if(Q.front==Q.rear) return 0;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return 1;
}
//取队头元素
QElemType GetHead(SqQueue Q) {
if(Q.front!=Q.rear){
return Q.base[Q.front];
}
}
main(){
int n,e;
SqQueue Q;
//初始化
n=InitQueue(Q);
if(n==1){
printf("队列初始化成功\n");
}
//入队
for(int i=0;i<10;i++) {
EnQueue(Q,i);
}
//出队
n=DeQueue(Q,e);
if(n==1){
printf("出队元素:%d\n",e);
}
//求队列长度
n=QueueLength(Q) ;
printf("队列长度为%d\n",n);
//取对头元素
e=GetHead(Q) ;
printf("队头元素:%d\n",e);
}
队列--顺序队列的表示和实现
于 2024-07-26 16:27:27 首次发布