1、简介

定义:一种先进先出的线性表。
队空:front == rear
假队满 rear == MaxSize

2、数据结构

#define MaxSize 50
#define Error -1
typedef struct{ElemType Data[MaxSize];int front,rear;
}SqQueue;

3、基本操作

SqQueue InitQueue(SqQueue Q);
bool Empty(SqQueue Q);
bool EnQueue(SqQueue &Q,int x);
bool DeQueue(SqQueue &Q, int &x);
ElemType GetTop(SqQueue Q);

3.1 初始化队列

//初始化队列
SqQueue InitQueue(SqQueue Q){Q.front = Q.rear = 0;return Q;
}

3.2 判断队空

//判断是否Empty
bool Empty(SqQueue Q){if (Q.front == Q.rear && Q.front == 0){return true;}return false;
}

3.3 入队

先入队,在让尾指针加一

//入队
bool EnQueue(SqQueue &Q,int x){if(Q.rear == MaxSize){cout << "Queue is \'full\' " << endl;return false;}else{Q.Data[Q.rear++] = x;return true;}}

3.4 出队

//出队
bool DeQueue(SqQueue &Q, int &x){if(!Empty(Q)){x = Q.Data[Q.front++];return true;}else{cout << "Queue is empty" << endl;return false;}
}

3.5 获取队头元素

//获取队头元素
ElemType GetTop(SqQueue Q){if(!Empty(Q)){return Q.Data[Q.front];}else{cout << "Queue is Empty" << endl;return Error;}}

4、完整代码

#include<iostream>
using namespace std;typedef int ElemType;#define MaxSize 50
#define Error -1
typedef struct{ElemType Data[MaxSize];int front,rear;
}SqQueue;SqQueue InitQueue(SqQueue Q);
bool Empty(SqQueue Q);
bool EnQueue(SqQueue &Q,int x);
bool DeQueue(SqQueue &Q, int &x);
ElemType GetTop(SqQueue Q);
int main(){SqQueue Q = InitQueue(Q);cout << Q.front << " " << Q.rear << endl;cout << "Enqueue" << endl;if(EnQueue(Q,10)){cout << GetTop(Q) << endl;}EnQueue(Q,12);cout << "Dequeue " << endl;int x;if(DeQueue(Q,x)){cout << x << endl;}cout << "One more time " << endl;int y;DeQueue(Q,y);cout << y << endl;return 0;
}//初始化队列
SqQueue InitQueue(SqQueue Q){Q.front = Q.rear = 0;return Q;
}//判断是否Empty
bool Empty(SqQueue Q){if (Q.front == Q.rear && Q.front == 0){return true;}return false;
}//入队
bool EnQueue(SqQueue &Q,int x){if(Q.rear == MaxSize){cout << "Queue is \'full\' " << endl;return false;}else{Q.Data[Q.rear++] = x;return true;}}//获取队头元素
ElemType GetTop(SqQueue Q){if(!Empty(Q)){return Q.Data[Q.front];}else{cout << "Queue is Empty" << endl;return Error;}}//出队
bool DeQueue(SqQueue &Q, int &x){if(!Empty(Q)){x = Q.Data[Q.front++];return true;}else{cout << "Queue is empty" << endl;return false;}
}

(7)数据结构-基本队列实现相关推荐

  1. 数据结构之队列、双端队列

    数据结构之队列.双端队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First in First Out)的线性表,简称FIFO.允许插入的 ...

  2. (四)数据结构之“队列”

    数据结构之"队列" 队列是什么? 队列的应用场景 场景一:食堂排队打饭 场景二:JS异步中的任务队列 场景三:计算最近请求次数 LeetCode:933.最近的请求次数 前端与队列 ...

  3. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

    前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...

  4. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)

    队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中 ...

  5. 数据结构之队列的应用(实现斐波那契数列)

    数据结构之队列的应用(实现斐波那契数列) 导入 基本的队列结构 的构造函数 const Queue = require('./Queue.js')/*** @description 获取第n项斐波那契 ...

  6. python环形队列_Python 实现数据结构-循环队列的操作方法

    今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...

  7. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟

    仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...

  8. 大一新生必看,自学必看,里昂详解数据结构之队列

    数据结构之队列 有幸掌握浅薄知识,不吝分享,保持独立思考,自主学习,共同进步.另求关注,点赞,评论,感谢!(tips:主页有数据结构全部知识点,以及知识点讲解,建立完善的数据结构知识体) 核心算法思想 ...

  9. 数据结构——环形队列的原理(模拟环形队列)

    数据结构--环形队列的原理(模拟环形队列) 知识点简要介绍: 队列:一种特殊的线性表,包含队列头.队列尾,只允许在队列头进行删除操作,在队列为进行删除操作 分类:     顺序队列.循环队列(环形队列 ...

  10. 数据结构之队列queue

    C++数据结构之队列queue 什么是队列 队列的基本特征 队列是如何工作的 队列的实现 队列的应用 什么是队列 与栈相反,队列是一种先进先出(FIFO)的线性表,只允许在表的一端插入,在另一端删除. ...

最新文章

  1. linux之父密码,Linux之父十大名言
  2. 安装AverMedia UltraA 实时游戏录屏转播模块
  3. JZOJ 3731. 【NOIP2014模拟7.10】庐州月
  4. 工作分配问题pascal程序
  5. POJ 3648 Wedding
  6. MySQL主从数据库配置
  7. Linux 文件打乱顺序
  8. 未来码农或可以备份一个自己的大脑
  9. 切割日志 python版
  10. 这3件事发生后,我彻底给 Python“跪了”!
  11. Wunderlist使用技巧
  12. 2019年入职体检那些事
  13. webgl点光源的漫反射
  14. Excel如何制作斜线表头
  15. Windows设备场景函数 - GetDC Ex
  16. 百度云盘上传文件 提示服务器错误,百度网盘上传文件失败怎么办?百度网盘无法上传文件的解决办法...
  17. python培训班靠谱吗-python编程培训 python培训靠谱吗
  18. 云开发—扫码点餐系统实战
  19. http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html
  20. C# 按Esc键关闭窗体

热门文章

  1. 能大大提升工作效率和时间效率的9个重要习惯
  2. opencv+python 霍夫圆检测原理
  3. 4 数据操作+数据预处理
  4. 第四季-专题11-LED驱动程序设计
  5. 测试连接数据库是否成功
  6. 数据批量删除_从页面js到后台数据库
  7. SpringBoot 使用小技巧合集
  8. 如何在Win10上配置JDK1.8
  9. [HDU3756]Dome of Circus
  10. Oracle问题小记五:服务启动-索引-子查询-分页存储过程