队列,先进先出,则道出了其核心的两个步骤:入队(ENQUEUE)与出队(DEQUEUE)
以顺序队列为例来学习队列的实现
总结其代码实现的几点:
1.队列对象定义
2.队列初始化
3.入队,指一个一个的读入数据对象
4.出队,删除数据对象
5.main()函数里对入队出队的调取来创建队列
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef int ElemType;
/
//定义队列类型
typedef struct QNode
{
ElemType data[MAX];
int front,rear;
}SeqQueue;
/
//顺序队列的初始化
SeqQueue SeqQueueInit()
{
SeqQueue Q; //队头和队尾相等即为空队列
Q.front = Q.rear = 0;
return Q;
}
/
//顺序队列的入队
void SeqQueueEnter(SeqQueue &Q,ElemType x)
{
if( (Q.rear+1) % MAX == Q.front )//入队必须判断队列是否满了
printf("Queue full\n");
Q.rear = (Q.rear+1) % MAX;
Q.data[Q.rear] = x;
}
///
//顺序队列的出队列
ElemType SeqQueueOut(SeqQueue &Q)
{
if(Q.rear == Q.front) //出队列时候必须判断队列是否为空
printf("Queue empty\n");
ElemType x;
Q.front = (Q.front+1) % MAX;
x = Q.data[Q.front];
return x;
}
//
int main()
{
SeqQueue queue;
queue = SeqQueueInit();
ElemType x;
printf("请输入入队列的元素:");
while(scanf("%d",&x) != EOF)
{
SeqQueueEnter(queue,x);
}
while(queue.front != queue.rear)
{
printf("%d ",SeqQueueOut(queue));
}
return 0;
}