首页 > 其他 > 详细

顺序队

时间:2019-08-14 11:03:20      阅读:114      评论:0      收藏:0      [点我收藏+]
typedef struct {
	ElemType data[MAXSIZE];
	int front, rear;
}SqQueue;

初始化

void InitQueue(SqQueue*& q)
{
	q = (SqQueue*)malloc(sizeof(SqQueue));
	q->front = -1;
	q->rear = -1;
}

  销毁

void DestroyQueue(SqQueue*& q)
{
	free(q);
}

  判断队列是否为空

bool QueueEmpty(SqQueue* q)
{
	return (q->front == q->rear);
}

  进队

bool enQueue(SqQueue*& q, ElemType e)
{
	if (q->rear == MAXSIZE - 1)
		return false;

	q->rear++;
	q->data[q->rear] = e;
	return true;
}

  出队

bool  deQueue(SqQueue*& q, ElemType& e)
{
	if (q->front == q->rear)
		return false;

	q->front++;
	e = q->data[q->front];
	return true;
}

  环形队列

环形队列①

typedef struct {
	ElemType data[MAXSIZE];
	int front, rear;
}SqQueue1;

  初始化

void InitQueue1(SqQueue1*& q)
{
	q = (SqQueue1*)malloc(sizeof(SqQueue1));
	q->front = q->rear = 0;
}

  销毁

void DestroyQueue1(SqQueue1*& q)
{
	free(q);
}

  判断是否为空

bool QueueEmpty(SqQueue1* q)
{
	return (q->front == q->rear);
}

  进队

bool enQueue1(SqQueue1*& q, ElemType e)
{
	if ((q->rear + 1) % MAXSIZE == q->front)
		return false;
	
	q->rear = (q->rear + 1) % MAXSIZE;
	q->data[q->rear] = e;
	return true;
}

  出队

bool delQueue(SqQueue1*& q, ElemType& e)
{
	if (q->rear == q->front)
		return false;

	q->front = (q->front + 1) % MAXSIZE;
	e = q->data[q->front];
	return true;
}

  环形队列②

typedef struct {
	ElemType data[MAXSIZE];
	int front;
	int count;
}SqQueue2;

  初始化

void InitQueue2(SqQueue2*& qu)
{
	qu = (SqQueue2*)malloc(sizeof(SqQueue2));
	qu->front = 0;
	qu->count = 0;
}

  判断队列是否为空

bool QueueEmpty2(SqQueue2* qu)
{
	return (qu->count == 0);
}

  进队

bool enQueue2(SqQueue2*& qu, ElemType e)
{
	int rear;
	if (qu->count == MAXSIZE)
		return false;
	
	rear = (qu->front + qu->count) % MAXSIZE;
	rear = (rear + 1) % MAXSIZE;
	qu->data[rear] = e;
	qu->count--;
	return true;
}

  出队

bool delQueue(SqQueue2*& qu, ElemType& e)
{
	if (qu->count == 0)
		return false;

	qu->front = (qu->front + 1) % MAXSIZE;
	e = qu->data[qu->front];
	qu->count--;
	return true;
}

  

 

顺序队

原文:https://www.cnblogs.com/KIROsola/p/11350246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!