一.队列的基本原理
队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点:
- 队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。
- 在队尾添加元素,在队头删除元素。
二.队列的相关概念:
- 队头与队尾: 允许元素插入的一端称为队尾,允许元素删除的一端称为队头。
- 入队:队列的插入操作。
- 出队:队列的删除操作。

队列通常提供的操作:
- 入队: 通常命名为push()
- 出队: 通常命名为pop()
- 求队列中元素个数
- 判断队列是否为空
- 获取队首元素
#include<stdio.h>
#define maxsize 10
struct queue{
int data[maxsize];
int front;
int rear;
};
typedef struct queue Queue;
void queue_init(Queue *qe)
{
qe->front=-1;
qe->rear=-1;
}
Queue enqueue(Queue *qe,int s)
{
if(qe->rear==maxsize-1)
printf("队列满");
else
qe->data[qe->rear++]=s;
}
int dequeue(Queue *qe)
{
int s=0;
if(qe->front==qe->rear)
return 0;
//printf("队列空");
else
{
s=qe->data[qe->front++];
return s;
}
}
void destroy(Queue *q)
{
q->rear=q->front=-1;
#define maxsize 10
struct queue{
int data[maxsize];
int front;
int rear;
};
typedef struct queue Queue;
void queue_init(Queue *qe)
{
qe->front=-1;
qe->rear=-1;
}
Queue enqueue(Queue *qe,int s)
{
if(qe->rear==maxsize-1)
printf("队列满");
else
qe->data[qe->rear++]=s;
}
int dequeue(Queue *qe)
{
int s=0;
if(qe->front==qe->rear)
return 0;
//printf("队列空");
else
{
s=qe->data[qe->front++];
return s;
}
}
void destroy(Queue *q)
{
q->rear=q->front=-1;
}