队列
允许删除的一端叫队头
允许插入的一端叫队尾
第一个入队的元素在队头
最后一个入队的元素在队尾
第一个出队的元素为队头元素
最后一个出队的元素为队尾元素
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
typedef int datatype;
typedef struct
{
datatype data[MAXSIZE];
int front,rear;//队头,队尾
}SeQueue;
//循环队列
//初始化
SeQueue* Init_Queue()
{
SeQueue* q;
q = (SeQueue*)malloc(sizeof(SeQueue));
q->front = q->rear = 0;
return q;
}
//入队
int In_Queue(SeQueue* q,datatype x)
{
if((q->rear + 1) % MAXSIZE == q->front)
{
printf("队满\n");
return 0;
}
else
{
q->rear = (q->rear + 1) % MAXSIZE;
q->data[q->rear] = x;
return 1;
}
}
//判断队空
int Empty_Queue(SeQueue* q)
{
if(q->front == q->rear)
return 1;
else
return 0;
}
//出队
int Out_Queue(SeQueue* q,datatype *x)
{
if(Empty_Queue(q))
{
//printf("队空\n");
return 0;
}
else
{
q->front = (q->front + 1) % MAXSIZE;
*x = q->data[q->front];
return 1;
}
}
void main()
{
SeQueue* q = Init_Queue();
int data;
printf("入队:\n");
scanf("%d",&data);
while(data != -1)
{
if(!In_Queue(q,data))
break;
scanf("%d",&data);
}
printf("\n出队:\n");
while(Out_Queue(q,&data))
{
printf("%d ",data);
}
printf("\n");
}