继上篇文章 直接贴代码
#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新生 进行数组的练习 3个数据结构的数组实现练习
一个循环线性地址先进先出队列(FIFO),非常适合用做通讯、任务等,具有如下特点: 1.循环队列,空间利用率非常高,不用动态分配内存,不使用链表,无内存泄漏,无内存碎片; 2.线性地址空间,直接使用memcpy进出,...
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 # 优点 循环队列的一个好处是我们可以利用这个...
数据结构中队列的各种实现和应用,其中包括:菜单驱动演示;模拟飞机场;双端队列;循环线性队列及其扩展。
1. 基于双链表实现双端队列的典型操作(判空、头插、头删、尾插、尾删、普通构造、拷贝构造、赋值运算符重载、析构),编写简单程序使用该双端队列,测试和调试程序。 2. 基于双端队列的头插、头删操作,完成栈的...
利用python实现了堆栈、队列、双端队列和链表等线性数据结构,可以直接使用也可以用作学习。注释较全。
数据结构 有关线性结构的查找以及删除 使用队列来快速实现些功能
通过线性表实现了队列的线性存储,包括:创建一个队列、销毁一个队列、清空一个队列、向队列中插入一个元素、删除一个元素、返回队列元素个数、返回队头元素、返回队尾元素等操作。
栈和队列是两种重要的线性结构。从结构的角度来说,栈和队列其实就是线性表,他们的基本操作其实就是线性表的子集。他们是操作受限的线性表。从数据类型的角度来看,它们是和线性表大小不相同的两类重要的抽象类型。...
我自己写的三种线性数据结构的实现,即线性表\栈\队列的数组及链式实现
js中对于线性结构,栈的顺序存储和链式存储,队列的顺序、链式结构的简单实现
栈和队列是两种重要的线性结构,定义,表示方法,代码实现
//实现的是类似循环队列,但由于是静态线性队列(数组) //而不是用链表来实现的,所以到静态队列(数组)尾部,尾指针自动指向(数组)头部 *Rear = mQueue; } puts("Input Data:"); scanf("%d", *Rear); //...
对线性结构的总结,数据结构学习的很多资料,希望对大家有用
就是我们常说的先进后出(FILO),队列的插⼊操作在线性表的⼀端进⾏ ⽽其他操作在线性表的另⼀端进⾏,先进先出(FIFO),由于线性结构存在两种存储结构,因 此队列和栈各存在两个实现⽅式。 ⼆、部分实现 1. 顺序...
利用template模板实现循环队列,队列入队、提取队首元素、删除队首元素。
该 Demo 旨在展示如何在 C++ 中实现两种基本的线性数据结构:队列和栈。队列遵循先进先出 (FIFO) 的原则,而栈则遵循后进先出 (LIFO) 的原则。这两种数据结构在计算机科学领域有着广泛的应用,因此掌握它们的实现方式...
公司项目中经常设计到串口通信,TCP通信,而且大多都是实时的大数据的传输,然后大家都知道协议通讯肯定涉及到什么,封包、拆包、粘包、校验……什么鬼的...因为有简单高效的原因,甚至在硬件都实现了环形队列。 C
基于RED改进的主动队列管理算法,石汶鑫,陈广泉,本文提出非线性平滑算法通过对RED算法的丢包率函数进行非线性平滑,有效地控制了平均队列长度,具有较好的拥塞控制能力。同时,考