数据结构队列的简单操作,读对头,增加数据,计算队列的长度。
#include<stdio.h>
#include<stdlib.h>
#define M 100
typedef struct{
int * base;
int front;
int rear;
}SqQueue;
int IniSqQueue(SqQueue &Q){//队列的初始化
Q.base=(int *)malloc(M*sizeof(int));
if(!Q.base){
exit(-2);
}
Q.front=0;
Q.rear=0;
return 1;
}
int GetHead(SqQueue Q){//读队头
if(Q.front==Q.rear){
return 0;
}
return Q.base[Q.front];
}
int SqQueueLenth(SqQueue Q){//求队的长度
return(Q.rear-Q.front+M)%M;
}
int AddSqQueue(SqQueue &Q,int e){//增加元素
if((Q.rear+1)%M==Q.front){//判断是否满队
return 0;
}
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%M;
return 1;
}
int DeSqQueue(SqQueue &Q,int &e){//出队
if(Q.front==Q.rear){
return 0;
}
e=Q.base[Q.front];
Q.front=(Q.front+1)%M;
return 1;
}
int main(){
SqQueue Q;
int nin,i,e,nout;
IniSqQueue(Q);
printf("请输入要输入的队列个数:\n");
scanf("%d",&nin);
for(i=0;i<nin;i++){
printf("请输入第%d个数:",i+1);
scanf("%d",&e);
AddSqQueue(Q,e);
}
printf("队头为:\n");
printf("%d\n",GetHead(Q));
printf("队的长度为:\n");
printf("%d\n",SqQueueLenth(Q));
printf("请输入要输出数据的个数:\n");
scanf("%d",&nout);
for(i=0;i<nout;i++){
DeSqQueue(Q,e);
printf("%d ",e);
}
return 1;
}