线性数据结构——队列

  上次说了,一头进一头出的就是栈,那么什么是队列(queue)呢,就是一头进另一头出。正如我们排队一样,来了人只能站在队尾,先走的人只能是队头。在队列中,总是遵循fifo,fist in first out。

  队列通常分为以下几种:顺序队列和循环队列还有链队列。本文主要讲循环队列

顺序队列

  这个就不再这里过多叙述了,通常采用连续的数据空间存储队列中的元素,就像这样子

其中front表示队头,near表示队尾

循环队列

  顺序队列当队头不断地被取出,front会不断的往后移,这时候就会造成内存的极大浪费

而循环队列则不会

画成这样只是方便理解,事实上在内存中每个内存单元都是线性的

时间: 2024-10-14 13:44:29

线性数据结构——队列的相关文章

线性数据结构---队列,栈 随笔

我们从四个简单但重要的概念开始研究数据结构.栈,队列,deques(双向队列), 列表是一类数据的容器,它们数据元素之间的顺序由添加或删除的顺序决定.一旦一个数据元素被添加,它相对于前后元素一直保持该位置不变.诸如此类的数据结构被称为线性数据结构. 线性数据结构有两端,有时被称为左右,某些情况被称为前后.你也可以称为顶部和底部,名字都不重要.将两个线性数据结构区分开的方法是添加和移除元素的方式,特别是添加和移除元素的位置.例如一些结构允许从一端添加元素,另一些允许从另一端移除元素. 栈 概念:栈

数据结构—队列

数据结构-队列 1.队列的定义 队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许插入的一端称为队尾(rear),允许删除的一端称为队头 (Front) 队列模型 2.队列的操作 队列的操作原则是先进先出的,所以队列又称作FIFO表(First in First out) 置空队:InitQueue(Q) 判队空:QueueEmpty(Q) 判队满:QueueFull(Q) 入队:En

数据结构--队列之C数组实现

队列是一种限定操作的线性表,它只能在表的一段插入,另外一段取出. 所以也称为先进先出数据结构(FIFO---First In First Out) C代码如下(有小bug不想调了,作为参考即可): #include<stdio.h> #define maxsize 5 typedef int ElemType; typedef struct queue { int head; int tail; ElemType Data[maxsize]; }Queue; void InitQueue(Qu

3.数据结构--队列

队列是一种先进先出的线性数据结构 1.队列的实现 public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront(); } 实现队列 public class ArrayQueue<E> implements Queue<E>{ private Array<E> array; public ArrayQueue(i

数据结构-队列(2)-循环队列

循环队列 此前,我们提供了一种简单但低效的队列实现. 更有效的方法是使用循环队列. 具体来说,我们可以使用固定大小的数组和两个指针来指示起始位置和结束位置. 目的是重用我们之前提到的被浪费的存储. 设计循环队列 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器".循环队列的一个好处是我们可以利用这个队列之前用过的空间.在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即

基本数据结构-队列的实现及其运用

二.队列 队列是一种先进先出的数据结构,元素只能添加到队尾,而对元素的删除,修改,检索只能在队头进行.与栈的差异是很明显的.同样队列的实现可以基于链表,也可以基于数组.和栈的基本操作差不多,但队列多了一个指针(标号)指向末尾的元素,因为需要在末尾插入元素. 1.队列的链表实现 #ifndef QUEUE_H #define QUEUE_H #include <iostream> template <class T> class queue { public: queue(); ~q

java数据结构队列

队列类似于现实生活中的排队.队列是先进先出的原则,只允许在队列头部去除元素,队列尾部添加元素. 下面是分别用数组和链表为存储结构实现的队列 public interface Queue<T> { int size(); T remove(); void add(T element); boolean isEmpty(); void clear(); boolean hasElement(); } public class ArrayQueue<T> implements Queue

数据结构--队列实现(顺序队列和链队列)与C++模板

数据结构--队列实现(顺序队列和链队列)与C++模板 一.顺序队列 队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表. ①和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素. ②由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应置为0. 注意: ①当头尾指针相等时,队列为空. ②在非空队列里,队头指针始终指向队头元素,尾指针始终指向队尾元素的下一位置.(所以以下循环顺序队列中当队尾

java 数据结构 队列的实现

java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java.util.*; public class Queue{ Node tail = new Node(); Node nowNode = new Node(); //永远指向队首 int size; Queue(){}; Queue(String date){ this.tail.date = dat