队列是一端进(队尾进),一端出(队首出)也即FIFO(先进先出)的数据结构。
用数组来实现顺序队列。
下面是顺序队列的实现代码:
#include<stdio.h>
#define MAXSIZE 50
#define ElemType int
typedef struct{
ElemType data[MAXSIZE];
int front, rear;
}SqQueue;
void init(SqQueue &Q);
bool Push(SqQueue &Q, ElemType x);
bool Pop(SqQueue &Q, ElemType & x);
void Traverse(SqQueue Q);
int main(void)
{
int x;
SqQueue Q;
init(Q);
Push(Q, 1);
Push(Q, 2);
Push(Q, 3);
Push(Q, 4);
Push(Q, 5);
Traverse(Q);
if(Pop(Q,x))
{
printf("Pop succeed!\n");
printf("The data popped out is %d\n",x);
}
return 0;
}
void init(SqQueue &Q)
{
Q.front = 0;
Q.rear = 0;
}
bool Push(SqQueue &Q, ElemType x)
{
if(Q.rear == MAXSIZE)
return false;
Q.data[Q.rear++] = x;//赋值,然后rear后移
return true;
}//每一次push完,rear都在最后一个存储数据位置的后一位
bool Pop(SqQueue &Q, ElemType & x)
{
if(Q.front == Q.rear)
return false;
x = Q.data[Q.front++];
return true;
}
void Traverse(SqQueue Q) //从队首开始向后遍历
{
int p = Q.front;
while(p != Q.rear)
printf("%d\t",Q.data[p++]);
printf("\n");
}