循环队列的数组实现!!

来源:互联网 发布:mac系统官方下载地址 编辑:程序博客网 时间:2024/05/19 06:35
#include <stdio.h>
#define MAXSIZE 10
typedef struct 
{
int data[MAXSIZE];
int front,rear;
}*SeQueue;

int SeQueueInit(SeQueue Q)
{
Q->front=Q->rear=0;
return 1;
}
void SeQueueIn(SeQueue Q,int x)
{
if((Q->rear+1)%MAXSIZE ==Q->front)
{
//差一个 认为是满
printf("IS Full!\n");
exit(0);
}
Q->rear =(Q->rear+1)%MAXSIZE;//计算队尾的长度
Q->data[Q->rear] = x;
}

int SeQueueOut(SeQueue Q)
{
int x;
if(Q->rear == Q->front)
{
printf("is Empty!");
exit(0);
}
Q->front=(Q->front+1)%MAXSIZE;
x=Q->data[Q->front];//读出队列头的元素
return x;

}
//求队列中的元素的个数
int SeQueueLen(SeQueue Q)
{
return(Q->front-Q->rear+MAXSIZE)%MAXSIZE;
}
int SeQueueEmpty(SeQueue Q)
{
if(Q->rear == Q->front)
{
//printf("is Empty!");
//exit(0);
return 1;
}
else
{
return 0;
}
}

int main()
{
SeQueue Q;
int n=7,i,x;
Q=(SeQueue)malloc(sizeof(SeQueue));
SeQueueInit(Q);

//scanf("%d",&n);

for(i=0;i<n;i++)
{
SeQueueIn(Q,(i+1) );
}
while(!SeQueueEmpty(Q))
{

x=SeQueueOut(Q);
SeQueueIn(Q,x);
x=SeQueueOut(Q);
printf("%d",x);
}
}
 
0 0
原创粉丝点击