一、存儲結構
#define MAXSIZE 10
typedef struct
{
int data[MAXSIZE];
int front; //頭指針:不空時指向隊頭元素
int rear; //尾指針:不空時指向隊列尾元素的下一個位置
}SqQueue;
二、基本操作
1、初始化隊列
void InitQueue(SqQueue &Q)
{
Q.front = Q.rear = 0;
}
2、清空隊列
void ClearQueue(SqQueue &Q)
{
Q.front = Q.rear = 0;
}
3、求隊列長度
int QueueLength(SqQueue Q)
{
return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
}
4、入隊列
int EnQueue(SqQueue &Q, int e)
{
if ((Q.rear+1) % MAXSIZE == Q.front)
return 0;//隊滿
Q.data[Q.rear] = e;
Q.rear = (Q.rear+1) % MAXSIZE;
return 1;
}
5、出隊列
int DeQueue(SqQueue &Q, int &e)
{
if(Q.front == Q.rear)
return 0;//隊空
e = Q.data[Q.front];
Q.front = (Q.front+1) % MAXSIZE;
return 1;
}
6、遍歷隊列
void QueueTraverse(SqQueue Q)
{
int i;
putchar('|');
for(i = Q.front; i % MAXSIZE != Q.rear; i++)
printf(" %d |", Q.data[i]);
putchar('\n');
}