数据结构之顺序队列

include<stdio.h>

include<stdlib.h>

define size 20

typedef int ElemType;
typedef struct {
ElemType elem[size];
int front,rear;
}CircQueue;

void InitQueue(CircQueue & Q){
Q.front=Q.rear=0;
printf("初始化完毕!\n");
};

int EnQueue (CircQueue & Q,ElemType x){
if ((Q.rear+1)%size ==Q.front)
return 0;
Q.elem[Q.rear] = x;
Q.rear =(Q.rear+1)%size;
return 1;
};

int DeQueue (CircQueue &Q ,ElemType & x){
if (Q.front == Q.rear)
return 0;
x=Q.elem[Q.front];
Q.front= (Q.front+1)%size;
return 1;
};

int GetFront (CircQueue & Q, ElemType & x){
if(Q.front==Q.rear)
return 0;
x=Q.elem[Q.front];
return 1;
};

int QueueEmpty (CircQueue & Q){
return Q.front == Q.rear;
};

int QueueFull (CircQueue & Q){
return (Q.rear+1)%size ==Q.front;
};

int QueueSize (CircQueue & Q){
return (Q.rear-Q.front+size)%size;
};

int main (){
CircQueue Q;
InitQueue(Q);
int i=0,s,b;
printf("您想要输入数据的个数为(20以内:)");
scanf("%d",&s);
if(s>size){
printf("输入错误!");
return 0;
}
printf("请输入您想要输入的数据:");
for (i=0;i<s;i++){
scanf("%d",&b);
EnQueue(Q,b);
}
QueueFull(Q);
if(Q.front == Q.rear){
printf("队列满了\n");
}
QueueEmpty(Q);
if(Q.front ==Q.rear){
printf("队列空了!");
return 0;
}
int a;
printf("请输入您需要取出的数据的个数:");
scanf("%d",&a);
if(a>s){
printf("输入错误!");
return 0;
}
printf("出队前队列的长度为:%d\n",QueueSize(Q));
for(i=0;i<a;i++){
DeQueue(Q,b);
printf("%2d",b);
}
printf("\n");
printf("出队后队列的长度为:%d\n",QueueSize(Q));
return 0;
}

posted @ 2019-04-28 16:55  杨垚1  阅读(215)  评论(0编辑  收藏  举报