数据结构-队列之顺序队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(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;
}
数据结构-队列之顺序队列相关推荐
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- 数据结构与算法(3-2)队列(顺序队列、循环队列与链队列)
目录 一.顺序队列 1.存储结构 2.入队和出队 总代码 二.循环队列 总代码: 三.链队列 1.存储结构 2.入队和出队 总代码 一.顺序队列 队列特征:先进后出.后进后出. 1.存储结构 //队列 ...
- 数据结构--队列Queue--链式队列、顺序队列
队列:先进先出,就如排队一样,先到的,先排上 1.链式队列 1.1 头文件 listQueue.h /*** @description: 链式队列* @author: michael ming* @d ...
- 常用数据结构 ——— 队列(环形队列和顺序队列)
目录 一.队列简介 二.顺序队列 三.环形队列 四.环形队列代码 1.队列结构体 2.队列初始化 3.判断队列是否为满 4.判断队列是否为空 5.将数据插入到队列中 6.读取队列中的数据 7.释放队列 ...
- c语言队列(顺序队列,循环队列,链式队列)
顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...
- 【数据结构】队列-顺序队列、循环队列、链队、双端队列
定义 队列是只允许在一端进行插入,而在另一端进行删除的线性表. 队头(Front):允许删除的一端,又称为队首. 队尾(Rear): 允许插入的一端. 先进入队列的元素必然先离开队列,即先进先出(Fi ...
- 数据结构--队列Queue--循环顺序队列
针对顺序队列中的入队操作:if 队列没满,但是队尾到达数组末尾了,队列"满"了,其实没有满,数据需要整体移至数组头部,才可以继续入队. 为解决该问题,避免数据的挪移,有了循环顺序队 ...
- 线性表:顺序队列算法实现
顺序队列介绍 顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.我们知道队列是一种先将先出的数据结构,它是一种受限制的线性表,我们的顺序队列是一种队列,采用的是顺序存储结构.与其对应的是 ...
- abcde依次进入一个队列_数据结构与算法(6):队列
(文中图片出自王争老师的课程:数据结构与算法之美,侵删) 先进者先出,这就是典型的队列. 根据上篇文章,我们知道栈只支持两个基本操作:入栈 push()和出栈 pop().队列跟栈非常相似,支持的操作 ...
最新文章
- SQL-Oracle游标
- SAP库存管理预留功能评测
- shiro密码正确也会匹配错误_Shiro学习之——Shiro与Web集成
- 温州大学《深度学习》课程课件(八、深度卷积神经网络)
- 向量封包处理器(VPP)如何运作
- 所经历的大文件数据导出(后台执行,自动生成)
- 学习数据库系统概论这一篇就够了
- SAP那些事-理论篇-18-如何做SAP售前
- PDF阅读器开发商福昕曝出数据泄露事件,涉及用户帐户密码
- 微积分(一)——二重积分与三重积分笔记
- 如何求复数的模用计算机,复数计算器(复数运算工具)
- Context and Attribute Grounded Dense Captioning
- 入手评测 i7 1255u和i5 1235U选哪个好
- linux 常用文本处理工具
- 在线ASCII转换工具
- CMOS反相器基础(数字电路学习笔记)
- mp4box-h264-ftyp-moov-mvhd-thkd-avcC-sps-pps 详解
- 【转载】谈SCI、EI、ISTP三大索引收录号的检索
- Orchestrator部署
- 用计算机提升银行业务,银行使用计算机完成客户存款的通存通兑业务在计算机应用上属于__ __...
热门文章
- 获取Android手机的分辨率通过ADB命令
- 虚拟主机搭建微信公众号服务器,建web服务器同时如何搭建虚拟主机?方法有几种?...
- Failed to load resource: the server responded with a status of 500 (Internal Server Error)
- Redis缓存数据库服务器
- 安装漂亮的Faenza1.3与Faience0.5图标主题
- 3分钟弄明白JAVA三大修饰符
- iBatis 2.x 和 MyBatis 3.0.x 的区别
- PHP 全局变量global详解
- html5 选择列表,Html5添加基于列表的选择美化插件教程
- dp线和hdmi区别_干货| 认识VGA、DVI、HDMI、DP视频接口