#include
#include
#define MAX 5
typedef int DATAYTYPE;
//队列的结构体
typedef struct
{
//存放数据
DATAYTYPE buf[MAX];
//记录第一个元素的下标
//出队的时候通过front出队
int front;
//记录最后一个元素的下标
//入队的时候通过rear入队
int rear;
}SeqQueue;
//创建一个空队列
SeqQueue *create_queue()
{
SeqQueue *q;
q = (SeqQueue *)malloc(sizeof(SeqQueue));
q->front = q->rear = -1;
return q;
}
//判断队列是否为空
int is_empty_queue(SeqQueue *q)
{
return q->front == q->rear ? 1 : 0;
}
//判断队列是否为满
int is_full_queue(SeqQueue *q)
{
return q->rear == MAX - 1 ? 1 : 0;
}
//尾入
int EnterQueue(SeqQueue *q,DATAYTYPE data)
{
q->buf[++q->rear] = data;
return 0;
}
//头出
DATAYTYPE DeleteQueue(SeqQueue *q)
{
return q->buf[++q->front];
}
//主函数 实现 创建队列 尾入头出
int main(int argc, const char *argv[])
{
int i = 0;
SeqQueue *q = create_queue();
while(!is_full_queue(q))
{
EnterQueue(q,i++);
}
while(!is_empty_queue(q))
{
printf("%d ",DeleteQueue(q));
}
printf("\n");
return 0;
}
//队列可以实现数据插入和输出的顺序都是一样的,这点和栈不相同
阅读(560) | 评论(0) | 转发(0) |