[数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构相关的知识,希望对你有一定的参考价值。

代码如下:

#include <iostream>
using namespace std;

const int MAXQSIZE = 10;

typedef int ElemType;

typedef struct
{
	ElemType *base;
	int front;
	int rear;
}SqQueue;

bool initQueue(SqQueue &q)
{
	q.base = new ElemType[MAXQSIZE];
	if (!q.base) return false;
	q.front = q.rear = 0;
	return true;
}

bool destroyQueue(SqQueue &q)
{
	delete[] q.base;
	q.front = q.rear = 0;
	return true;
}

bool clearQueue(SqQueue &q)
{
	q.rear = q.front;
	return true;
}

bool queueEmpty(SqQueue q)
{
	if (q.front == q.rear) return true;
	return false;
}


bool getHead(SqQueue q, ElemType &e)
{	
	if (q.front == q.rear) return false;
	e = q.base[q.front];
	return true;
}

int queueLength(SqQueue q)
{
	return (q.rear - q.front + MAXQSIZE) % MAXQSIZE;
}

bool enQueue(SqQueue &q, ElemType e)
{
	if ((q.rear + 1) % MAXQSIZE == q.front) return false;
	q.base[q.rear] = e;
	q.rear = (q.rear + 1) % MAXQSIZE;
	return true;
}

bool deQueue(SqQueue &q, ElemType &e)
{
	if (q.front == q.rear) return false;
	e = q.base[q.front];
	q.front = (q.front + 1) % MAXQSIZE;
	return true;
}

void queueTraverse(SqQueue q)
{
	int i = q.front;
	while (i != q.rear)
	{
		cout << q.base[i] << " ";
		i = (i + 1) % MAXQSIZE;
	}
	cout << endl;
}

int main()
{
	int n;
	cin >> n;
	SqQueue q;
	initQueue(q);
	int a;
	for (int i = 0; i < n; i++)
	{
		cin >> a;
		enQueue(q, a);
	}
	queueTraverse(q);
	deQueue(q, a);
	deQueue(q, a);
	queueTraverse(q);
	cout << queueLength(q) << endl;
	return 0;
}

以上是关于[数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(C语言版)严蔚敏->队列的顺序存储(循环队列)和链式存储

[数据结构-严蔚敏版]P46栈的顺序存储表示

考研笔记之数据结构之线性表(严蔚敏版)

考研笔记之数据结构之线性表(严蔚敏版)

考研笔记之数据结构之线性表(严蔚敏版)

[数据结构-严蔚敏版]P65离散事件模拟(银行客户的离散事件驱动模拟程序)