#include <stdio.h>
#define QUEUE_SIZE 100
#define OK 0
#define ERROR -1
typedef int DataType;
typedef struct
{
DataType data[QUEUE_SIZE];
int rear, front;
}SeqQueue;
// 置空队列
int InitQueue(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
q->rear = 0;
q->front = 0;
return OK;
}
// 判断是否空队
int QueueEmpty(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
return q->rear == q->front;
}
// 判断是否队满
int QueueFull(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
return (q->rear+1)%QUEUE_SIZE == q->front;
}
// 入队
int EnQueue(SeqQueue *q, int data)
{
if (q == NULL)
{
return ERROR;
}
if (QueueFull(q))
{
return ERROR;
}
q->rear = (q->rear+1) % QUEUE_SIZE;
q->data[q->rear] = data;
return OK;
}
// 出队
int DeQueue(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
if (QueueEmpty(q))
{
return ERROR;
}
q->front = (q->front+1) % QUEUE_SIZE;
return q->data[q->front];
}
// 获取队头元素
int GetFront(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
if (QueueEmpty(q))
{
return ERROR;
}
int pos = (q->front+1) % QUEUE_SIZE;
return q->data[pos];
}
int main()
{
SeqQueue queue;
if (InitQueue(&queue) != OK)
{
return -1;
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
int i=0;
for (i = 0; i<10; i++)
{
EnQueue(&queue, i);
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
for (i = 0; i<10; i++)
{
printf ("%4d", DeQueue(&queue));
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
return 0;
}
#define QUEUE_SIZE 100
#define OK 0
#define ERROR -1
typedef int DataType;
typedef struct
{
DataType data[QUEUE_SIZE];
int rear, front;
}SeqQueue;
// 置空队列
int InitQueue(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
q->rear = 0;
q->front = 0;
return OK;
}
// 判断是否空队
int QueueEmpty(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
return q->rear == q->front;
}
// 判断是否队满
int QueueFull(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
return (q->rear+1)%QUEUE_SIZE == q->front;
}
// 入队
int EnQueue(SeqQueue *q, int data)
{
if (q == NULL)
{
return ERROR;
}
if (QueueFull(q))
{
return ERROR;
}
q->rear = (q->rear+1) % QUEUE_SIZE;
q->data[q->rear] = data;
return OK;
}
// 出队
int DeQueue(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
if (QueueEmpty(q))
{
return ERROR;
}
q->front = (q->front+1) % QUEUE_SIZE;
return q->data[q->front];
}
// 获取队头元素
int GetFront(SeqQueue *q)
{
if (q == NULL)
{
return ERROR;
}
if (QueueEmpty(q))
{
return ERROR;
}
int pos = (q->front+1) % QUEUE_SIZE;
return q->data[pos];
}
int main()
{
SeqQueue queue;
if (InitQueue(&queue) != OK)
{
return -1;
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
int i=0;
for (i = 0; i<10; i++)
{
EnQueue(&queue, i);
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
for (i = 0; i<10; i++)
{
printf ("%4d", DeQueue(&queue));
}
if (QueueEmpty(&queue))
{
printf ("空队列\n");
}
else
{
printf ("不是空队列\n");
}
return 0;
}