数据结构——顺序队列(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实现)
一.队列是什么 队列是一种可以实现“先进先出”的存储结构. 队列通常可以分为两种类型: 一.顺序队列,采用顺序存储,当长度确定时使用. 顺序队列又有两种情况: ①使用数组存储队列的称为静态顺序队列. ...
随机推荐
- 再谈Token认证,如何快速方便获取用户信息
前面我写了一篇<Token认证,如何快速方便获取用户信息>的文章,引起了各位读者的积极参与,除了文章中我提出的三种方式,各位读者大佬们也贡献了其他多种实现方式. 今天决定基于大家提供的思路 ...
- Spark学习笔记01-基础
目录 简介 特性 Spark运行模式 Mac本地安装 本文基于 Spark 2.4.1 进行演示,相关代码可以在我的Github上看到. 简介 Spark是一个分布式集群计算系统,类似Hadoop提供 ...
- DirectShow 学习方法
DirectShow(简称 DShow) 是一个 Windows 平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能. 这篇博客主要是简单讲下如何学习 Direct Show 框架,避免让自己少 ...
- 有关tab页的
有关tab页的 1.静态的 2.动态的可以删除的 3.删除右侧,左侧,全部,除了自己以外的. 4.多了可以自动伸缩. 5.带shown事件.可以反向影响菜单去.
- Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!
本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...
- python-7-数据结构与类型转换
前言 python除了前面所说的基础类型,我们这里也需要讲解下数据结构,数据结构里面存放的是基础类型,如数字等同时也可以嵌套. 不可变数据(3 个):Number(数字).String(字符串).Tu ...
- LaTex语法
排版数学公式是TeX系统设计的初衷,它在LaTeX中占有特殊地位,也是LaTeX最为人所称道的功能之一.基于对MathType排版效果的不满意,以及对公式进行检索的需求,我们使用LaTeX输入数学公式 ...
- 基于Task定时检测网络本地网络状况
首先我们需要使用winInet.dll中的InternetGetConnectedState方法来检测本地是否连接网络,然后再通过ping的方式来获取网络状况. 然后我们采用Task来开辟一个线程来定 ...
- Docker中如何调试剖析.net core 的程序。
前言 现在.net core跨平台了,相信大部分人都把core的程序部署在了linux环境中,或者部署在了docker容器中,与之对应的,之前都是部署在windows环境中,在win中,我们可以用wi ...
- 在Linux系统中运行并简单的测试RabbitMq容器
以前使用的是Windows下面的RabbitMq,需要先安装 Erlang的语言环境等,这次直接在Linux中的Docker容器来测试一下 1:docker配置RabbitMq的指令 docker r ...