`
Dev|il
  • 浏览: 122126 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

队列的线性实现

 
阅读更多
继上篇文章 直接贴代码
#include <iostream>
using namespace std;

#define ElemType int
const int INIT_SIZE = 100;
const int INCREMENT_SIZE = 10;
//缺点:浪费空间
class Queue{
private:
	int front;
	int rear;
	int queue_total_size;
	ElemType *data;
public:
	bool InitQueue(); //构造一个空队列
	void DestoryQueue(); //销毁队列
	void ClearQueue(); //清空队列
	bool QueueEmpty(); //队列是否为空
	int QueueLength(); //队列长度
	void GetHead(ElemType &e); //获取队头元素
	bool EnQueue(ElemType e); //把e插入到队尾
	bool DeQueue(ElemType &e); //如果队列不为空,删除队头元素,用e返回其值
};
//初始化队列
bool Queue::InitQueue()
{
	this->front = this->rear = 0;
	this->data = (ElemType *)malloc(sizeof(ElemType) * INIT_SIZE);
	if(!this->data)
		return false;
	this->queue_total_size = INIT_SIZE;
	return true;
}
//销毁队列
void Queue::DestoryQueue()
{
	delete this->data;
}
//情况队列
void Queue::ClearQueue()
{
	this->rear = this->front;
}
//队列是否为空
bool Queue::QueueEmpty()
{
	return this->rear == this->front;
}
//获取队列长度
int Queue::QueueLength()
{
	return rear;
}
//获取队头元素
void Queue::GetHead(ElemType &e)
{
	e = this->data[front];
}
//进队列
bool Queue::EnQueue(ElemType e)
{
	if(this->rear < this->queue_total_size)
	{
		this->data = (ElemType *)realloc(this->data, sizeof(ElemType) * (this->queue_total_size + INCREMENT_SIZE));
		if(!this->data)
			return false;
		this->queue_total_size += INCREMENT_SIZE;
	}
	this->data[rear++] = e;
	return true;
}
//出队列
bool Queue::DeQueue(ElemType &e)
{
	e = this->data[front];
	front++;
	return true;
}
int main()
{
	int e;
	Queue queue;
	queue.InitQueue();
	queue.EnQueue(3);
	queue.EnQueue(4);
	queue.EnQueue(5);
	queue.DeQueue(e);
	cout<<e;
	return 0;
}
分享到:
评论

相关推荐

    队列的实现

    队列的实现,程序完全可以实现,帮助大家学习和参考,

    Java-用数组实现栈-队列-线性列表

    Java-用数组实现栈-队列-线性列表(最详细) 有注释 适合java新生 进行数组的练习 3个数据结构的数组实现练习

    一个循环线性地址先进先出队列(FIFO),

    一个循环线性地址先进先出队列(FIFO),非常适合用做通讯、任务等,具有如下特点: 1.循环队列,空间利用率非常高,不用动态分配内存,不使用链表,无内存泄漏,无内存碎片; 2.线性地址空间,直接使用memcpy进出,...

    循环队列(C语言实现)

    设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个...

    数据结构中队列的各种实现和应用

    数据结构中队列的各种实现和应用,其中包括:菜单驱动演示;模拟飞机场;双端队列;循环线性队列及其扩展。

    【实验报告】 线性数据结构的实现与应用_双端队列_逆波兰式_呼叫中心_XAUAT_(原问题自杜克大学C++ Stacks and Queues and List

    1. 基于双链表实现双端队列的典型操作(判空、头插、头删、尾插、尾删、普通构造、拷贝构造、赋值运算符重载、析构),编写简单程序使用该双端队列,测试和调试程序。 2. 基于双端队列的头插、头删操作,完成栈的...

    线性数据结构Python实现

    利用python实现了堆栈、队列、双端队列和链表等线性数据结构,可以直接使用也可以用作学习。注释较全。

    数据结构 有关线性结构的查找 使用队列

    数据结构 有关线性结构的查找以及删除 使用队列来快速实现些功能

    队列的链式存储C语言实现

    通过线性表实现了队列的线性存储,包括:创建一个队列、销毁一个队列、清空一个队列、向队列中插入一个元素、删除一个元素、返回队列元素个数、返回队头元素、返回队尾元素等操作。

    栈和队列的实现1

    栈和队列是两种重要的线性结构。从结构的角度来说,栈和队列其实就是线性表,他们的基本操作其实就是线性表的子集。他们是操作受限的线性表。从数据类型的角度来看,它们是和线性表大小不相同的两类重要的抽象类型。...

    三种线性数据结构的实现

    我自己写的三种线性数据结构的实现,即线性表\栈\队列的数组及链式实现

    js 简单实现 栈,队列.rar

    js中对于线性结构,栈的顺序存储和链式存储,队列的顺序、链式结构的简单实现

    栈与队列。

    栈和队列是两种重要的线性结构,定义,表示方法,代码实现

    c语言简单队列

    //实现的是类似循环队列,但由于是静态线性队列(数组) //而不是用链表来实现的,所以到静态队列(数组)尾部,尾指针自动指向(数组)头部 *Rear = mQueue; } puts("Input Data:"); scanf("%d", *Rear); //...

    线性结构总结和习题( 数据结构 )

    对线性结构的总结,数据结构学习的很多资料,希望对大家有用

    数据结构之线性结构和非线性结构.pdf

    就是我们常说的先进后出(FILO),队列的插⼊操作在线性表的⼀端进⾏ ⽽其他操作在线性表的另⼀端进⾏,先进先出(FIFO),由于线性结构存在两种存储结构,因 此队列和栈各存在两个实现⽅式。 ⼆、部分实现 1. 顺序...

    循环队列(C++)

    利用template模板实现循环队列,队列入队、提取队首元素、删除队首元素。

    一个简单的队列类和栈类

    该 Demo 旨在展示如何在 C++ 中实现两种基本的线性数据结构:队列和栈。队列遵循先进先出 (FIFO) 的原则,而栈则遵循后进先出 (LIFO) 的原则。这两种数据结构在计算机科学领域有着广泛的应用,因此掌握它们的实现方式...

    C#环形缓冲区(队列)完全实现

    公司项目中经常设计到串口通信,TCP通信,而且大多都是实时的大数据的传输,然后大家都知道协议通讯肯定涉及到什么,封包、拆包、粘包、校验……什么鬼的...因为有简单高效的原因,甚至在硬件都实现了环形队列。  C

    论文研究-基于RED改进的主动队列管理算法 .pdf

    基于RED改进的主动队列管理算法,石汶鑫,陈广泉,本文提出非线性平滑算法通过对RED算法的丢包率函数进行非线性平滑,有效地控制了平均队列长度,具有较好的拥塞控制能力。同时,考

Global site tag (gtag.js) - Google Analytics