继上篇文章 直接贴代码
#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;
}
分享到:
相关推荐
循环队列是一种线性数据结构,它在物理结构上实现了一个闭合的循环,因此队首和队尾可以在数组的任意位置。这种设计使得在队列满或空时,仍能有效地进行入队和出队操作,避免了普通队列在达到边界条件时的特殊处理。...
线性循环队列是一种特殊的队列形式,它利用数组来存储元素,并通过巧妙地调整队列的前端(front)和尾端(rear)指针来实现队列的操作(如入队、出队等),以此解决传统队列在连续存储空间不足时可能出现的问题。线性...
队列作为一种线性数据结构,遵循“先进先出”(FIFO)原则,即最早插入的元素最先被移除,而最近插入的元素则在队尾等待处理。在计算机科学中,队列有着广泛的应用,例如任务调度、网络缓冲区管理、打印机队列等。Java...
数据结构中的队列是一种线性数据结构,遵循“先进先出”(First In First Out, FIFO)的原则。在这个实验中,我们重点学习了如何用C++实现循环队列的存储和操作。 首先,循环队列的结构定义为`seqqueue`,包含一个...
双端队列(Double-Ended Queue,简称deque)是一种线性数据结构,它允许在队列的两端进行插入和删除操作。在C++标准库中,`std::deque`是内置的双端队列容器,提供了高效且灵活的内存管理。然而,如果你想要自定义一...
队列是一个线性数据结构,其一端称为“头部”,新元素在此加入;另一端称为“尾部”,旧元素从此处移除。当头部的元素被移除后,队列中的下一个元素会成为新的头部元素。队列的主要操作包括:入队(enqueue)、出队...
Java 数组实现栈、队列和线性列表 Java 是一种广泛使用的编程语言,数组是 Java 中的一种基本数据结构。数组可以用来实现栈、队列和线性列表等数据结构。下面是使用 Java 数组实现栈、队列和线性列表的详细介绍。 ...
循环队列是一种线性数据结构,它在计算机科学中被广泛应用于数据的存储和处理,尤其是在需要高效地进行入队(enqueue)和出队(dequeue)操作的场景。相较于普通队列,循环队列的最大优势在于它可以有效地利用内存...
在计算机科学领域,**队列**是一种常见的线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。也就是说,最早添加到队列中的元素将是最先被移除的元素。队列通常用于解决需要按顺序处理数据的问题,比如...
队列是一种线性数据结构,包含入队(enqueue)和出队(dequeue)两个操作。在串口接收中,新接收到的数据会被放入队列尾部,而数据处理则从队列头部取出。这样,即使数据接收速度快于处理速度,数据也不会丢失,因为...
循环队列是一种线性数据结构,它在物理结构上实现了一个首尾相接的闭合环形序列。这种数据结构克服了普通队列在出队和入队操作时可能出现的“满”或“空”问题,提高了空间利用率。在循环队列中,队头和队尾的位置都...
下面我们将深入探讨队列的概念、C#中的队列实现以及如何在实际编程中应用队列。 首先,理解队列的基本操作至关重要。队列主要有以下几个核心操作: 1. **Enqueue**:将一个元素添加到队列的末尾,也就是入队操作。...
队列是一种线性数据结构,其中元素按照特定顺序(FIFO)进行操作。在队列中,新元素在队尾(rear)加入,而旧元素在队头(front)移除。队列的操作通常包括入队(enqueue)、出队(dequeue)、检查队头元素(peek)...
在计算机科学中,队列是一种线性数据结构,遵循“先进先出”(FIFO,First In First Out)的原则。这种数据结构在实现各种系统,包括排队系统中扮演着重要角色。下面我们将深入探讨如何使用队列来实现一个排队系统。...
在计算机科学中,线性结构是一种基础的数据组织方式,队列是其中的一种典型代表。队列遵循“先进先出”(FIFO, First In First Out)的原则,这意味着最先入队的元素也将最先出队。队列的应用广泛,例如在操作系统中...
顺序队列是一种线性数据结构,它按照元素在内存中的存储方式来划分,所有元素在内存中连续存放,类似于数组。这种数据结构在处理大量数据时具有高效的特点,因为访问和操作元素通常只需要一个地址计算。本文将详细...
在本资源中,我们将探讨循环队列的实现和使用方法。 1. 循环队列的数据类型 循环队列可以用数组或链表来实现。在本资源中,我们使用模板类来实现循环队列。模板类的名称为SeqQueue,表示顺序队列。该类提供了构造...
循环队列是一种线性数据结构,它在物理存储上表现为一个固定大小的数组,但在逻辑上,队头和队尾可以“循环”地移动,使得队列在满和空的状态下依然能有效地工作。这种数据结构常用于解决需要先进先出(FIFO)操作的...
循环队列是一种线性数据结构,它在物理存储上实现为一个固定大小的数组,队尾和队首可以通过某种方式“循环”回到数组的开头,从而有效地利用了数组的全部空间。在C++中实现循环队列,我们需要关注以下几个关键点: ...
队列是一种线性数据结构,与栈不同的是,队列中的元素按照它们加入队列的顺序进行操作。队列有两个主要的操作:入队(enqueue)和出队(dequeue)。入队是在队列的一端添加元素,而出队是从另一端移除元素。队列的...