代码
///////////////////////////////////////////// /
// 顺序队列的初始化,建立,插入,查找,删除。 //
// Author:Wang Yong //
// Date: 2010.8.19 //
///////////////////////////////////////////// /
#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 ;
}