队列采用顺序存储结构来表示,即在内存中用一组地址连续的存储单元依次存放从队头到队尾的数据元素。
有一点要注意,当队尾rear=MAX_SIZE时候,队列并不一定占满。
判断队列为空的条件front == rear
判断队列满的条件为 (rear + 1) % MAX_SIZE == front
进队操作:rear = (rear + 1) % MAX_SIZE
出队操作:front = (front + 1) % MAX_SIZE
在这里插入代码片
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
}seq_queue;
void init_seq_queue(seq_queue *S)
{
S->front = S->rear = 0;
}
int is_queue_empty(seq_queue *S)
{
return S->front == S->rear ? 1 : 0;
}
int en_queue(seq_queue *S, int data)
{
if ((S->rear + 1) % MAX_SIZE == S->front) {
printf("queue is full\n")