数据结构
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define MAXQSIZE 100
typedef struct
{
int *elem;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue *Q)//队列初始化
{
Q->elem=(int*)malloc(MAXQSIZE*sizeof(int));
if(!Q->elem)return(OVERFLOW);
Q->rear=Q->front=0;
return OK;}
int EnQueue(SqQueue *Q,int e)//入队操作
{if((Q->rear+1)%MAXQSIZE==Q->front)return ERROR;
Q->elem[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXQSIZE;
return OK;
}
int DeQueue(SqQueue *Q,int *e)//出队操作
{
if(Q->front==Q->rear)return ERROR;
*e=Q->elem[Q->front];
Q->front=(Q->front+1)%MAXQSIZE;
return OK;
}
int QueueLength(SqQueue Q)//实现计算队列中元素的操作
{
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
void Display(SqQueue Q)//实现显示队列中元素的操作
{
int i;
if(Q.rear>Q.front)
{for (i=Q.front;i<Q.rear;i++)
printf("\t%d",Q.elem[i]);
};
if(Q.rear<Q.front)
{for(i=Q.front;i<MAXQSIZE;i++)
printf("\t%d",Q.elem[i]);
};
printf("\n");
}
void main()
{ int e;
SqQueue Q;
InitQueue(&Q);
printf("创建队列,请输入队列元素(以0结束);\n");
scanf("%d",&e);
while(e!=0)
{
EnQueue(&Q,e);
scanf("%d",&e);
}
printf("\n");
printf("目前队列中的元素:\n");
Display(Q);
printf("\n");
printf("请输入要入列的元素:");
scanf("%d",&e);
EnQueue(&Q,e);
printf("\n");
printf("执行入列操作后,队列中的元素为:\n");
Display(Q);
DeQueue(&Q,&e);
printf("\n");
printf("队头出队,删除的元素:\n");
printf("%d\n",e);
printf("\n");
printf("执行出队操作后,队列中的元素:\n");
Display(Q);
printf("\n");
printf("队列的长度");
printf("\t%d\n",QueueLength(Q));
return;
}