• 队列的定义--Queue

队列是只允许在表的队尾插入,在表的队头进行删除。队列具有先进先出的特性(FIFO, First In First Out)。

  • 队列提供了下面的操作
     q.empty()               如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
  • 队列的实现

下面是用C++实现的一个队列结构的源码(链表)

 #pragma once
#include<iostream>
#include<assert.h>
using namespace std;
template<typename T>
class Queue
{
public:
Queue()
:pHead(NULL)
, pTail(NULL)
{}
Queue(const QueueNode<T>& q)
{
QueueNode<T>*Node = q.pHead;
while (Node)
{
Push(Node->data);
Node = Node->next;
}
}
~Queue()
{
QueueNode<T> *Node = pHead;
while (Node)
{
QueueNode<T>*Del = Node;
Node = Node->next;
delete Del;
}
pHead = NULL;
size = ;
}
QueueNode<T>& operator = (const QueueNode<T>& q)
{
if (this != &q)
{
Node<T> *pNode = other._pHead;
while (NULL != pNode)
{
Push(pNode->_data);
pNode = pNode->_pNext;
}
} return *this;
}
void Push(const T &data)
{
if (pHead == NULL)
{
pTail = pHead = new QueueNode<T>(data);
}
else
{
pTail ->next = new QueueNode<T>(data);
pTail = pTail->next;
}
}
void Pop()
{
assert(NULL != pHead);
if (pHead == pTail)
{
delete pHead;
pHead = pTail = NULL;
}
else
{
QueueNode<T>*Del = pHead;
pHead = pHead->next;
delete Del;
}
}
bool Empty()
{
return pHead == NULL;
}
T& Fornt()
{
assert(pHead); return pHead->data;
} T& Back()
{
assert(pTail); return pTail->data;
}
size_t Size()
{
while (pHead != NULL)
{
size++;
pHead = pHead->next;
}
return size;
}
void Print()
{
QueueNode<T>*cur = pHead;
while (cur)
{
cout << cur->data << "->";
cur = cur->next;
}
cout << "NULL";
}
protected:
QueueNode<T>* _BuyNode(const T& data)
{
return new QueueNode<T>(data);
}
protected:
QueueNode<T>* pHead;
QueueNode<T>* pTail;
size_t size;
};
void main()
{
Queue<int> q;
q.Push();
q.Push();
q.Push();
q.Pop();
q.Print();
cout<<q.Size();
cout<<q.Fornt();
cout << q.Back();
system("pause"); }

数据结构—队列(Queue)的更多相关文章

  1. 用go实现常用算法与数据结构——队列(queue)

    queue 简介 队列是一种非常常见的数据结构,日常生活中也能经常看到.一个典型的队列如下图(图片来自 segmentfault): 可以看出队列和我们日常生活中排队是基本一致的.都遵循 FIFO(F ...

  2. 数据结构 -- 队列Queue

    一.队列简介 定义 队列(queue)在计算机科学中,是一种先进先出的线性表. 它只允许在表的前端进行删除操作,而在表的后端进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有 ...

  3. [C++][数据结构]队列(queue)的实现

    对于队列的定义,前人之述备矣. 队列的实现方法与栈非常相似.我直接在我实现的那个栈的代码上加了一点东西,全局替换了一些标识符,就实现了这个队列. 我实现的是一个queue<value>容器 ...

  4. 数据结构-队列(Queue)

    #include <stdio.h> #include <stdlib.h> #define LIST_INIT_SIZE 10 #define LISTINCREMENT 1 ...

  5. Python与数据结构[2] -> 队列/Queue[0] -> 数组队列的 Python 实现

    队列 / Queue 数组队列 数组队列是队列基于数组的一种实现,其实现类似于数组栈,是一种FIFO的线性数据结构. Queue: <--| 1 | 2 | 3 | 4 | 5 |<-- ...

  6. java数据结构——队列、循环队列(Queue)

    每天进步一点点,坚持就是成功. 1.队列 /** * 人无完人,如有bug,还请斧正 * 继续学习Java数据结构————队列(列队) * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数 ...

  7. python基本数据结构栈stack和队列queue

    1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...

  8. 数据结构:队列queue 函数push() pop size empty front back

    队列queue: push() pop() size() empty() front() back() push()  队列中由于是先进先出,push即在队尾插入一个元素,如:可以输出:Hello W ...

  9. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

随机推荐

  1. ArrayList调用remove(int index)抛出UnsupportedOperationException问题分析以及解决记录

    使用Arrays转数组成为List后,不能调用add(...)和remove(...)方法,此时如果调用就会抛出UnsupportedOperationException异常 原因 其实Arrays. ...

  2. JS学习- ES6 async await使用

    async 函数是什么?一句话,它就是 Generator 函数的语法糖. 使用场景常常会遇到,请求完一个接口,拿完值再去请求另外一个接口,我们之前回调callback函数处理,如果很多的情况下,看起 ...

  3. 如何本地搭建centos7虚拟主机?

    1 前期准备: 下载虚拟机和CentOS安装源 VMware-workstation-full-10.0.3-1895310 CentOS-7.0-1406-x86_64-DVD.iso   以下是过 ...

  4. thinkphp5 前台模板的引入css,js,images

    一:在公共的静态文件夹中建立我们模块的名称用来放置css,js,images 二:在配置文件config中定义需要的路径 三:在视图页面引入

  5. 第四课:PHP 变量

    变量指程序中使用的数值是可以变化的量,与常量(一旦被定义,就无法改变)相反. 变量是用于存储信息的"容器": 实例 <?php $x=5; $y=6; $z=$x+$y; e ...

  6. PHP icov转码报错解决方法,iconv(): Detected an illegal character in input string

    iconv(): Detected an illegal character in input string 错误解决方法 //转码 function iconv_gbk_to_uft8($strin ...

  7. PHP入门笔记--基础语法二

    一.函数 自定义函数 任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类定义. <?php function foo() { function bar() { echo &qu ...

  8. hive 学习系列五(hive 和elasticsearch 的交互,很详细哦,我又来吹liubi了)

    hive 操作elasticsearch 一,从hive 表格向elasticsearch 导入数据 1,首先,创建elasticsearch 索引,索引如下 curl -XPUT '10.81.17 ...

  9. JS基础知识-01

    01-浅谈前端发展史 第一阶段:C/S(client server)->B/S(browser server) 网页制作 技术栈:PhotoShop.HTML.CSS 第二阶段:从静态到动态,从 ...

  10. narcissus

    public class narcissus { public static void main(String args[]) { long u=0,t=0,h=0,y=0,k=0; for(long ...