• 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++实现循环顺序队列

  • 队列的操作特性:先进先出
  • 队列中元素具有相同类型
  • 相邻元素具有前驱和后继关系
  • 设置队头、队尾两个指针,以改进出队的时间性能

约定:队头指针front指向队头元素的前一个位置,队尾指针rear指向队尾元素

为了解决假溢出,我们将存储队列的数组头尾相接,从而产生了循环队列。

如何判断循环队列队空?

队空:front=rear

如何盘对循环队列堆满?

队满:front=rear

那么问题就来了,队空和队满的判断条件相同,为了避免队满时产生队空的判断或者相反,我们需要修改队满条件使得队空和堆满的判定条件分开。
方法:浪费一个元素空间,队满时数组只有一个空闲单元。队满条件:(rear+1)%QueueSize==front

下面是实现代码:

文件CirQueue.h

#ifndef CirQueue_byNim
#define CirQueue_byNim

#include<iostream>
using namespace std;

const int QueueSize=100;  //循环队列的最大存储空间 
template <class T>
class CirQueue
{
  private:
    T *data;  //存储数据的数组 
    int front,rear; //队头队尾指针 
  public:
    CirQueue()
    {
      data=new T[QueueSize];
      front=rear=0;
    }
    ~CirQueue()
    {
      delete []data;
      front=rear=0;
    }
    void EnQueue(T e)
    {
      if((rear+1)%QueueSize==front)  //队满条件 
        throw "上溢";
      rear=(rear+1)%QueueSize;
      data[rear]=e;
    }
    T DeQueue()
    {
      if(rear==front)//队空条件 
        throw "下溢";
      front=(front+1)%QueueSize;
      return data[front];
    }
    T GetQueue()
    {
      if(rear==front)//队空条件 
        throw "下溢";
      return data[(front+1)%QueueSize];
    }
    bool empty()
    {
      if(front==rear) //队空条件:front==rear 
        return true;
      return false;
    }
};

#endif

</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

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

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

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

相关文章

  • 2017-05-28C++设计模式之命令模式
  • 2017-05-28C++二进制翻转实例分析
  • 2017-05-28快速入门的一些C\C++书籍
  • 2017-05-28对C语言中递归算法的深入解析
  • 2017-05-28C++ boost::asio编程-异步TCP详解及实例代码
  • 2017-05-28C++ string 字符串查找匹配实例代码
  • 2022-04-30C语言共用体(C语言union用法)详解
  • 2022-04-30C语言位域(位段)详解
  • 2017-05-28Linux C 时间函数应用
  • 2017-05-28C++函数pyrUp和pyrDown来实现图像金字塔功能

文章分类

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

最近更新的内容

    • 解析使用C++编写无错代码的方法技巧
    • SublimeText编译C开发环境设置
    • VC外部符号错误_main,_WinMain@16,__beginthreadex解决方法
    • C语言 数据结构之连续存储数组的算法
    • C语言变量类型与输出控制用法实例教程
    • 深入解析函数指针与返回函数的指针
    • VC解析XML文件-CMarkup的使用详解
    • 详解state状态模式及在C++设计模式编程中的使用实例
    • C/C++实现快速排序的方法
    • 关于双向链表的增删改查和排序的C++实现

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

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