数据结构-链式队列-C++
用链表搭建的栈与队列相对简单,队列的特点是先进先出,不啰嗦了,由于代码比较简单,相信光顾的人不会太多,下面直接贴代码。
头文件
#ifndef QUEUELI_H
#define QUEUELI_H template<class T>
class Queue
{
public:
Queue();
~Queue(); bool isEmpty() const;
const T & getFront() const;
void enqueue(const T& x);
T dequeue();
void makeEmpty(); private: //也可以做一个友元类
struct ListNode
{
T element;
ListNode *next; ListNode(const T & theElement, ListNode *n=):
element(theElement), next(n){}
};
ListNode *front;
ListNode *back;
}; template<class T>
Queue<T>::Queue() //创建队列
{
front = back = ;
} template<class T>
Queue<T>::~Queue()//所有步骤执行完最后执行析构函数,清空队列
{
makeEmpty();
} template<class T>
void Queue<T>::makeEmpty()//清空队列
{
while (!isEmpty())
dequeue();
} template<class T>
bool Queue<T>::isEmpty() const
{
return front == ;
} template<class T>
const T & Queue<T>::getFront() const
{
if (isEmpty())
throw"Queue is empty.";
return front->element;
} template<class T>
void Queue<T>::enqueue(const T &x)
{
if (isEmpty())
back = front = new ListNode(x);
else
back = back->next = new ListNode(x);//队列在队尾插入结点
} template<class T>
T Queue<T>::dequeue()//删除队列
{
T frontItem = getFront();//留作返回要删除的结点中的值用
ListNode *old = front;
front = front->next;
delete old;
return frontItem;
} #endif
源文件-测试用
#include<iostream>
#include"QueueLi.h" using namespace std; int main()
{
cout << "测试链式队列:" << endl; Queue<int> myQ; myQ.enqueue();
myQ.enqueue();
myQ.enqueue();
myQ.enqueue(); cout << myQ.getFront() << endl;
myQ.dequeue();
cout << myQ.getFront() << endl; return ;
}
数据结构-链式队列-C++的更多相关文章
- C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...
- 利用链式队列(带头节点)解决银行业务队列简单模拟问题(c++)-- 数据结构
题目: 7-1 银行业务队列简单模拟 (30 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客 ...
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- 数据结构----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- C++数据结构之链式队列(Linked Queue)
C++数据结构之链式队列,实现的基本思想和链式栈的实现差不多,比较不同的一点也是需要注意的一点是,链式队列的指向指针有两个,一个是队头指针(front),一个是队尾指针(rear),注意指针的指向是从 ...
- C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)
一,数据结构——链表全操作: 链表形式: 其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点: 特别说明:对于单链表,每个节点(Nod ...
- C语言实现链式队列
链式队列,简称"链队列",即使用链表实现的队列存储结构. 链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素, ...
- C ~ 链式队列与循环队列
此处的链式与循环队列可以应用于BFS和树的层序遍历.下面是对其结构和基本操作的程序描述. 1.循环队列 解决循环队列的队空和队满的方法: [1].增加一个参数count,用来记录数组中当前 ...
- 循环队列和链式队列(C++实现)
循环队列: 1.循环队列中判断队空的方法是判断front==rear,队满的方法是判断front=(rear+1)%maxSize.(我曾经想过为什么不用一个length表示队长,当length==m ...
随机推荐
- 大数据技术之kettle(2)——练习三个基本操作
一.同一数据库两表数据关联更新 实现效果:把stu1的数据按id同步到stu2,stu2有相同id则更新数据 步骤: 1.在mysql中创建两张表: mysql>create database ...
- gisoracle做windows界面
import tkinter as tk from tkinter import messagebox # 设置窗口居中 def window_info(): ws = window.winfo_sc ...
- Java中JVM内存结构
Java中JVM内存结构 线程共享区 方法区: 又名静态成员区域,包含整个程序的 class.static 成员等,类本身的字节码是静态的:它会被所有的线程共享和是全区级别的: 属于共享内存区域,存储 ...
- PPR管各种接头产品名称
PPR管各种接头产品名称 http://ishare.iask.sina.com.cn/f/19n7gOsntbX.html
- keepalived非争抢机制不生效【原创】
故障现象:俩台服务器设置了keepalived非争抢机制,但是发现优先级高的服务器还是会优先获取vip 利用tcpdump抓包发现只有其中一台服务器,没有另一台 tcpdump -i eth0 vrr ...
- Shell脚本自动重启Java服务
话不多说直接上代码: cd /home/javaProduct/if [ -d '/home/javaProduct/lib_new/' ]; thenecho 'Has New Lib!'echo ...
- Eclipse 的快捷键以及文档注释、多行注释的快捷键 一、多行注释快捷键
一.多行注释快捷键 1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释 3.以上快捷 ...
- nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
现象 1.centos6.9 用rpm包安装nginx 2.修改Nginx的多个配置文件和配置项 3.service nginx restart 报错: nginx: [emerg] open() & ...
- layui的table中日期格式转换
我使用的layui的2.4.5版本,在util中已经带了格式转换的函数.这里主要记录如何使用. 未使用前在table中显示如下: 前端代码如下: {field:'createDate', title: ...
- Typora的日常使用方法
原文地址:https://www.jianshu.com/p/a6a6a22e9393 ” Markdown 是一种轻量级标记语言,创始人是约翰·格鲁伯(John Gruber).它允许人们 “使用易 ...