• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中队列的建立与操作详细解析

C++中队列的建立与操作详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++优先队列,c++队列,c++队列类,c++队列函数,c++队列的实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

什么是队列结构

队列结构是从数据运算来分类的,也就是说队列结构具有特殊的运算规则。而从数据的逻辑结构来看,队列结构其实就是一种线性结构。如果从数据的存储结构来进一步划分,队列结构可以分成两类。

顺序队列结构:即使用一组地址连续的内存单元依次保存队列中的数据。在程序中,可以定义一个指定大小的结构数组来作为队列。

链式队列结构:即使用链表形式保存队列中各元素的值。

在队列结构中允许对两端进行操作,但是两端的操作不同。在表的一端只能进行删除操作,称为队头;在表的另一端只能进行插入操作,称为队尾。如果队列中没有数据元素,则称之为空队列。从数据的运算角度分析,队列是按照“先进先出”的原则处理结点的。

可以将队列结构理解成是:超市排队结账的人群,排在队首的人先结账,然后不断会有人排在队尾等待结账,这就是一个先来先服务的队列的现实中的例子。

一般队列结构的基本操作只有两个:

入队列:将一个元素添加到队尾(相当于到队列最后排队等待)

出队列:将对头的元素取出,同时删除该元素,使后一个元素成为队头。

初次之外,还有初始化队列、获取队列长度的简单运算。下面,我们就是用C++建立顺序队列结构,并完成顺序队列结构的基本运算。
准备数据

准备数据就是定义在队列操作中需要用到的变量及数据结构等。

初始化队列数据

顺序队列的初始化操作步骤如下:

(1)按符号常量QUEUELEN指定的大小申请一段内存空间,用来保存队列中的数据。

(2)设置head=0和tail=0,表示一个空栈。

示例代码如下:

判断空队列

判断空队列是判断一个队列结构是否为空。如果是空队列,则表示该队列结构中国没有数据。此时可以进入如队列操作,不可以进行出队列操作。

示例代码如下:

判断满队列

判断满队列就是判断一个队列结构是否为满。如果是满队列,则表示该队列中没有多余的空间来保存额外数据。测试不可以进行入队列操作,可以进行出队列操作。

示例代码如下:

清空队列

清空队列就是清楚一个队列中的所有的数据。示例代码如下:

释放空间

释放空间是释放队列结构所占用的内存单元。由前面可知,在初始化队列结构时,使用了new关键字分配内存单元。虽然可以使用清空队列操作,但是清空队列操作并没有释放内存空间,这就需要使用delete关键字释放所占的内存单元。

示例代码如下:

</div>
程序中,调用了得delete释放new申请的内存空间。

入队列

入队列是队列结构的基本操作,主要操作是将数据元素保存到队列结构。入队列操作的具体步骤如下:

(1)首先判断队尾,如果tail等于QUEUELEN,则表示溢出,进行出错处理。否则执行以下操作。

(2)设置tail=tail+1(队列顶指针加1,指向入队列地址)

(3)就将入队列元素保存到tail指向的位置

示例代码如下:

因为tail的值从0开始,当前的值就是要插入的数组对应的元素的位置,所以写成q->tail++。

出队列

出队列是队列结构的基本操作,主要操作与入队列相反,其实从队列顶弹出一个数据元素。出队列操作的具体步骤如下:

(1)首先判断队首head,如果head等于tail,则表示为空队列,进行出错处理。否则,执行下面的步骤

(2)从队列首部取出队头元素(实际返回队头元素的指针)

(3)修改队首head的序号,使其指向后一个元素。
示例代码如下:

读结点数据也就是读取队列结构中结点的数据,这里的读操作其实就是读队列头的数据。需要助于的是,读结点数据的操作和出队列操作不同。读结点数据的操作仅是显示队列顶结点数据的内容,而出队列操作则将队列顶数据弹出,该数据不再存在。

示例代码如下:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++数据结构之实现循环顺序队列
  • C++ 简单的任务队列详解
  • C++中实现队列类链式存储与栈类链式存储的代码示例
  • C++循环队列实现模型
  • C++中队列的建立与操作详细解析
  • C++中用两个标准容器stack,实现一个队列的方法详解
  • 用C++实现队列的程序代码
  • 解析C++无锁队列的实现代码

相关文章

  • 2017-05-28深入分析C++中声明与定义的区别
  • 2017-05-28C 语言基础教程(我的C之旅开始了)[三]
  • 2017-05-28二叉查找树的插入,删除,查找
  • 2017-05-28深入解析函数指针与返回函数的指针
  • 2017-05-28C语言实现的程序员老黄历实例
  • 2017-05-28snprintf函数的用法解析
  • 2017-05-28C/C++中提高查找速度的小技巧
  • 2017-05-28基于malloc与free函数的实现代码及分析
  • 2017-05-28探讨C语言的那些小秘密之断言
  • 2017-05-28c++中typename和class的区别介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言获得电脑的IP地址的小例子
    • C++简单集合类的实现方法
    • 由static_cast和dynamic_cast到C++对象占用内存的全面分析
    • C实现分子沉积模拟的示例代码
    • C++联合体union用法实例详解
    • C++ 中使用lambda代替 unique_ptr 的Deleter的方法
    • 简单谈谈C++ 头文件系列之(iosfwd)
    • 浅谈C语言编程中的布尔bool数据类型
    • C++基本算法思想之穷举法
    • 详解C++中的内联函数和函数重载

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有