69,336
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#define SIZE 13
typedef struct{
int *base;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue *Q){
Q->base=(int *)malloc(sizeof(int)*SIZE);
if(!Q->base)exit(0);
Q->front=0;
Q->rear=-1;
return 1;
}
int QueueLength(SqQueue *Q){
//错if(Q->rear=Q->front)exit(0);
int l = Q->rear > Q->front ? Q->rear + 1 - Q->front : Q->rear + 1 - Q->front +SIZE;
printf("The Length of Queue is %d\n", l);
return l;
}
void EnQueue(SqQueue *Q,int e){
if(Q->rear!=-1 &&((Q->rear+1)%SIZE)==Q->front){//if(((Q->rear+1)%SIZE)==Q->front){
printf("full\n");
exit(0);
}
Q->rear=(Q->rear+1)%SIZE;
Q->base[Q->rear]=e;
}
void DeQueue(SqQueue *Q,int *e){
if(Q->rear==Q->front){ //错if(Q->rear=Q->front){
printf("empty\n");
}
*e=Q->base[Q->front];
Q->front++;
}
void Show(SqQueue Q,int i){
printf("Num.%d is %d\n",i,Q.base[i]);
}
int DestoryQueue(SqQueue Q){
free(Q.base);
Q.front=Q.rear=0;
return 1;
}
main()
{
int i,e,l;
SqQueue Q;
InitQueue(&Q); //InitQueue(Q);
for(i=0;i<SIZE;i++){
EnQueue(&Q,i); //EnQueue(Q,i);
}
l = QueueLength(&Q); //QueueLength(Q);
Show(Q,3);
for(i=0;i<SIZE;i++){
Show(Q,i);
}
DeQueue(&Q, &e); //DeQueue(Q, e);
printf("%d Deleted\n",e);
//for(i=0;i<SIZE;i++){
i = Q.front;
Show(Q,i);
do
{
i = (i + 1) % SIZE;
Show(Q,i);
} while (i != Q.rear);
DestoryQueue(Q);
}