数据结构——顺序队列(sequence queue)
/* sequenceQueue.c */
/* 顺序队列 */ #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h> #define MAXSIZE 100 /* 顺序循环队列数据结构 */
/* 一个圆圈,front指向队列头,rear指向队列尾 */
/*
front -> ... -> rear
data[0] -> data[...] -> data[n]
*/
typedef struct {
int data[MAXSIZE];
int rear, front;
int num; /* 队列元素的个数 */
} SeqQueue; void interface(void);
/* 顺序列表函数声明 */
SeqQueue *initializeSeqQueue();
bool isFullSeqQueue(SeqQueue*);
bool isEmptySeqQueue(SeqQueue*);
void inSeqQueue(SeqQueue*, int);
int outSeqQueue(SeqQueue*); int main(){
SeqQueue *sq = initializeSeqQueue();
int flag, number; interface();
for(;;){
printf("Command: ");
scanf("%d", &flag);
switch(flag){
case : printf("Bye!\n"); return ; break;
case :
if(isFullSeqQueue(sq))
printf("Queue is full!\n");
else{
printf("Enter number: ");
scanf("%d", &number);
inSeqQueue(sq, number);
}
break;
case :
if(isEmptySeqQueue(sq))
printf("Queue is empty!\n");
else{
printf("value: %d\n", outSeqQueue(sq));
}
break;
}
} return ;
} void interface(void){
puts("+********************+");
puts("+ 0, quit 退出 +");
puts("+ 1, in 入队 +");
puts("+ 2, out 出队 +");
puts("+********************+");
}
/* 顺序列表函数实现 */
/* 初始化顺序列表,列表为空,front和read都为-1,num为0 */
SeqQueue *initializeSeqQueue(){
SeqQueue *sq = (SeqQueue*)malloc(sizeof(SeqQueue));
sq->front = sq->rear = -;
sq->num = ;
return sq;
}
/* 判断队列是否为空 */
bool isEmptySeqQueue(SeqQueue *sq){
if(sq->num==)
return true;
return false;
}
/* 判断队列是否已满 */
bool isFullSeqQueue(SeqQueue *sq){
if(sq->num==MAXSIZE)
return true;
return false;
}
/* 入队 */
void inSeqQueue(SeqQueue *sq, int number){
/* 循环队列,取余MAXSIZE */
sq->rear = sq->rear+ % MAXSIZE;
sq->data[sq->rear] = number;
sq->num++;
}
/* 出队 */
int outSeqQueue(SeqQueue *sq){
sq->front = sq->front+ % MAXSIZE;
sq->num--;
return sq->data[sq->front];
}
数据结构——顺序队列(sequence queue)的更多相关文章
- 数据结构 - 顺序队列的实行(C语言)
数据结构-顺序队列的实现 1 顺序队列的定义 线性表有顺序存储和链式存储,队列作为一种特殊的线性表,也同样存在这两种存储方式.我们先来看队列的顺序存储结构. 队列的顺序储存结构:用数组存储队列,为了避 ...
- 数据结构之队列(Queue)
1,队列的定义 队列:是一种先进先出的数据结构,如下图所示,现进去的数据在队列前面(front),先出队列,后进入队列的数据在后面(rear),后出队列. 队列常用操作: q=Queue() #创建队 ...
- Java数据结构之队列(Queue)
1.使用场景 银行排队的案例: 2.队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则: 先存入队列的数据,要先取出. 后存入的要后取出 示意图:(使用数组模拟队列示意图) ...
- javascript数据结构之队列
首先什么是队列? 排队买东西就是生活中队列的实际例子,在队伍中大家必须按照顺序来,不能插队,新来的人只能排在队伍的最后面.新加入的人相当于队列的后端加入的元素,队伍最前面买完东西的人离开队伍相当于是队 ...
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- PHP实现队列(Queue)数据结构
队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队).进行删除操作的端称为队头,进行插入操作的端称为队尾.队列,是按照先进先出或 ...
- Javascript数据结构与算法--队列(顺序队列、优先队列、循环队列)的实现与用法
前言 队列和栈非常类似,前面已经讲过了栈的实现与用法,现在我们来说说队列. 队列介绍 队列遵循FIFO(First In First Out,先进先出)原则的一组有序的项. 队列是一种特殊的线性表,特 ...
- python 数据结构 队列(queue)
如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html 欢迎关注小婷儿的博客: 有问题请在博客下留言或加作者微信:t ...
- 数据结构之顺序队列(C实现)
一.队列是什么 队列是一种可以实现“先进先出”的存储结构. 队列通常可以分为两种类型: 一.顺序队列,采用顺序存储,当长度确定时使用. 顺序队列又有两种情况: ①使用数组存储队列的称为静态顺序队列. ...
随机推荐
- iOS Workflow 分享 - Create QR Code
上次我分享了一个 Scan QR Code 的 Workflow,这次我分享一个正好相反的.如果我要分享一个 URL(或者是一段非常短的文本)给别人,我就可以用这个 Workflow 来生成 QR C ...
- 网易云信技术分享:IM中的万人群聊技术方案实践总结
本文来自网易云信团队的技术分享,原创发表于网易云信公众号,原文链接:mp.weixin.qq.com/s/LT2dASI7QVpcOVxDAsMeVg,收录时有改动. 1.引言 在不了解IM技术的人眼 ...
- 有状态 Vs 无状态
NET Core 分布式框架 公司物联网项目集成Orleans以支持高并发的分布式业务,对于Orleans也是第一次接触,本文就分享下个人对Orleans的理解. 这里先抛出自己的观点:Orleans ...
- vulnhub之GoldenEye-v1靶机
靶机:virtualbox 自动获取 攻击:kali linux 自动获取 设置同一张网卡开启dhcp ifconfig攻击IP是那个网段(也可以netdiscpver,不过毕竟是自己玩懒得等 ...
- Spring AOP中使用@Aspect注解 面向切面实现日志横切功能详解
引言: AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一 ...
- 微信小程序小Demo
微信小程序小Demo 调用API,轮播图,排行榜,底部BabTar的使用... board // board/board.js Page({ /** * 页面的初始数据 */ // 可以是网络路径图片 ...
- ASP.NET Core Web 项目文件
在本节中,我们将探索并了解 asp.net core 项目文件. 我们使用 C#作为编程语言,因此项目文件具有.csproj 扩展名. 如果您使用过以前版本的 ASP.NET,那么您可能对此文件非常熟 ...
- 前端之:js
JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...
- Android App压力测试方法(Monkey)
一.为什么要开展压力测试 a.提高产品的稳定性:b.提高产品的留存率 二.什么时候开展压力测试 a.首轮功能测试通过后:b.下班后的夜间进行 三.7个基础知识(理论部分) 3.1 手动测试场景与自动测 ...
- 前端开发JS——快速入门
1.JS的核心标准ECMAScript 组成 ECMAScript------>核心语法标准 DOM------------->对文档节点的操作 ...