队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。

顺序队列是指分配一块连续的存储单元存放队列中的元素,并附设两个指针front和rear分别指示队头元素和队尾元素的位置。

队头指针指向队头元素,队尾指针指向队尾元素的下一个位置。

//队列之顺序队列#include "stdafx.cpp"#define ElementType int
#define MaxSize 50
typedef struct {ElementType data[MaxSize]; //存放队列的元素int front, rear; //队头指针和队尾指针int count;//统计元素个数
}SeQueue;/*
初始化空队列
*/
void InitQueue(SeQueue &q) {q.front = q.rear = 0;q.count = 0;
}
/*
判断队列是否为空
count==0 || q.front == q.rear ==0
*/
bool QueueEmpty(SeQueue q) {if (q.count <= 0) {return true;}return false;
}/*
入队操作
1.判断队列是否已满
2.赋值给队尾,队尾指针+1
*/
bool EnQueue(SeQueue &q,ElementType e) {//判断是否已满:尾指针-头指针if (q.count >= MaxSize) {return false;}q.data[q.rear] = e;q.rear++;q.count++;return true;
}/*
出队操作
1.判断队列是否为空
2.取出队头元素,队头指针+1
*/
ElementType DeQueue(SeQueue &q) {if (QueueEmpty(q)) {return NULL;}ElementType e = q.data[q.front];q.front++;q.count--;return e;
}

数据结构-队列之顺序队列相关推荐

  1. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  2. 数据结构与算法(3-2)队列(顺序队列、循环队列与链队列)

    目录 一.顺序队列 1.存储结构 2.入队和出队 总代码 二.循环队列 总代码: 三.链队列 1.存储结构 2.入队和出队 总代码 一.顺序队列 队列特征:先进后出.后进后出. 1.存储结构 //队列 ...

  3. 数据结构--队列Queue--链式队列、顺序队列

    队列:先进先出,就如排队一样,先到的,先排上 1.链式队列 1.1 头文件 listQueue.h /*** @description: 链式队列* @author: michael ming* @d ...

  4. 常用数据结构 ——— 队列(环形队列和顺序队列)

    目录 一.队列简介 二.顺序队列 三.环形队列 四.环形队列代码 1.队列结构体 2.队列初始化 3.判断队列是否为满 4.判断队列是否为空 5.将数据插入到队列中 6.读取队列中的数据 7.释放队列 ...

  5. c语言队列(顺序队列,循环队列,链式队列)

    顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...

  6. 【数据结构】队列-顺序队列、循环队列、链队、双端队列

    定义 队列是只允许在一端进行插入,而在另一端进行删除的线性表. 队头(Front):允许删除的一端,又称为队首. 队尾(Rear): 允许插入的一端. 先进入队列的元素必然先离开队列,即先进先出(Fi ...

  7. 数据结构--队列Queue--循环顺序队列

    针对顺序队列中的入队操作:if 队列没满,但是队尾到达数组末尾了,队列"满"了,其实没有满,数据需要整体移至数组头部,才可以继续入队. 为解决该问题,避免数据的挪移,有了循环顺序队 ...

  8. 线性表:顺序队列算法实现

    顺序队列介绍 顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.我们知道队列是一种先将先出的数据结构,它是一种受限制的线性表,我们的顺序队列是一种队列,采用的是顺序存储结构.与其对应的是 ...

  9. abcde依次进入一个队列_数据结构与算法(6):队列

    (文中图片出自王争老师的课程:数据结构与算法之美,侵删) 先进者先出,这就是典型的队列. 根据上篇文章,我们知道栈只支持两个基本操作:入栈 push()和出栈 pop().队列跟栈非常相似,支持的操作 ...

最新文章

  1. SQL-Oracle游标
  2. SAP库存管理预留功能评测
  3. shiro密码正确也会匹配错误_Shiro学习之——Shiro与Web集成
  4. 温州大学《深度学习》课程课件(八、深度卷积神经网络)
  5. 向量封包处理器(VPP)如何运作
  6. 所经历的大文件数据导出(后台执行,自动生成)
  7. 学习数据库系统概论这一篇就够了
  8. SAP那些事-理论篇-18-如何做SAP售前
  9. PDF阅读器开发商福昕曝出数据泄露事件,涉及用户帐户密码
  10. 微积分(一)——二重积分与三重积分笔记
  11. 如何求复数的模用计算机,复数计算器(复数运算工具)
  12. Context and Attribute Grounded Dense Captioning
  13. 入手评测 i7 1255u和i5 1235U选哪个好
  14. linux 常用文本处理工具
  15. 在线ASCII转换工具
  16. CMOS反相器基础(数字电路学习笔记)
  17. mp4box-h264-ftyp-moov-mvhd-thkd-avcC-sps-pps 详解
  18. 【转载】谈SCI、EI、ISTP三大索引收录号的检索
  19. Orchestrator部署
  20. 用计算机提升银行业务,银行使用计算机完成客户存款的通存通兑业务在计算机应用上属于__ __...

热门文章

  1. 获取Android手机的分辨率通过ADB命令
  2. 虚拟主机搭建微信公众号服务器,建web服务器同时如何搭建虚拟主机?方法有几种?...
  3. Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  4. Redis缓存数据库服务器
  5. 安装漂亮的Faenza1.3与Faience0.5图标主题
  6. 3分钟弄明白JAVA三大修饰符
  7. iBatis 2.x 和 MyBatis 3.0.x 的区别
  8. PHP 全局变量global详解
  9. html5 选择列表,Html5添加基于列表的选择美化插件教程
  10. dp线和hdmi区别_干货| 认识VGA、DVI、HDMI、DP视频接口