數據結構之順序循環隊列

一、存儲結構

#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');
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章