/* 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)的更多相关文章

  1. 数据结构 - 顺序队列的实行(C语言)

    数据结构-顺序队列的实现 1 顺序队列的定义 线性表有顺序存储和链式存储,队列作为一种特殊的线性表,也同样存在这两种存储方式.我们先来看队列的顺序存储结构. 队列的顺序储存结构:用数组存储队列,为了避 ...

  2. 数据结构之队列(Queue)

    1,队列的定义 队列:是一种先进先出的数据结构,如下图所示,现进去的数据在队列前面(front),先出队列,后进入队列的数据在后面(rear),后出队列. 队列常用操作: q=Queue() #创建队 ...

  3. Java数据结构之队列(Queue)

    1.使用场景 银行排队的案例: 2.队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则: 先存入队列的数据,要先取出. 后存入的要后取出 示意图:(使用数组模拟队列示意图) ...

  4. javascript数据结构之队列

    首先什么是队列? 排队买东西就是生活中队列的实际例子,在队伍中大家必须按照顺序来,不能插队,新来的人只能排在队伍的最后面.新加入的人相当于队列的后端加入的元素,队伍最前面买完东西的人离开队伍相当于是队 ...

  5. 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列

    一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...

  6. PHP实现队列(Queue)数据结构

    队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队).进行删除操作的端称为队头,进行插入操作的端称为队尾.队列,是按照先进先出或 ...

  7. Javascript数据结构与算法--队列(顺序队列、优先队列、循环队列)的实现与用法

    前言 队列和栈非常类似,前面已经讲过了栈的实现与用法,现在我们来说说队列. 队列介绍 队列遵循FIFO(First In First Out,先进先出)原则的一组有序的项. 队列是一种特殊的线性表,特 ...

  8. python 数据结构 队列(queue)

    如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293817.html 欢迎关注小婷儿的博客: 有问题请在博客下留言或加作者微信:t ...

  9. 数据结构之顺序队列(C实现)

    一.队列是什么 队列是一种可以实现“先进先出”的存储结构. 队列通常可以分为两种类型: 一.顺序队列,采用顺序存储,当长度确定时使用. 顺序队列又有两种情况: ①使用数组存储队列的称为静态顺序队列. ...

随机推荐

  1. python运维开发常用模块(7)web探测模块pycurl

    1.模块介绍 pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议有FTP.HTTP.HTTPS. ...

  2. springboot单元测试@test的使用

    @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class Springtest { ...

  3. 【杂文】CSP2019蒟蒻AFO(假)记

    [杂文]CSP2019蒟蒻AFO(假)记 [初赛前 N 天] 时间:2019-10-15 今晚 \(2012\) 的初赛题做到心态爆炸,选择考计算机基础知识一脸懵逼,填空和后面一道大模拟直接跳过,最后 ...

  4. Linux(CentOS)启动时自动执行脚本(rc.local)

    下面说说通过rc.local文件进行开机启动 1.首先创建一个启动脚本,这里以启动docker为例 创建 docker-startup.sh 脚本 #! /bin/bash /usr/bin/mk-d ...

  5. .Net常见的IOC框架及AOP框架

    IOC框架 Unity:微软patterns&practicest团队开发的IOC依赖注入框架,支持AOP横切关注点. MEF(Managed Extensibility Framework) ...

  6. python3的hashlib库sha256、pbkdf2_hmac、blake2b基本用法

    hashlib.sha256: import hashlib x = hashlib.sha256()x.update(b"asd")print("x_1 = " ...

  7. VMware 虚拟机网络配置

    随手记: 近期需要安装几个服务器,编写负载均衡NLB的教程,使用到虚拟机: VMware-workstation-full-15.0.2-10952284.exe cn_windows_server_ ...

  8. Java基础—内部类

    在Java语言中,可以把一个类定义到另一个类的内部,在类里面的这个类就叫作内部类,外面的类叫作外部类.在这种情况下,这个内部类可以被看成外部类的是一个成员(与类的属性和方法类似).还有一种类被称为顶层 ...

  9. logstash将redis中的队列中数据发送到influxdb数据库中

    通过elk获取到的java jvm中ygc的时间如下: 现在讲ygc字段的值,发送到influxdb中 首先安装logstash的插件 logstash-output-influxdb 安装完成后,查 ...

  10. jquery根据下拉框选择的值显示输入框

    原理就是根据下拉框选择的值来控制显示那个输入框: html代码: 首先定义一个下拉框,$serviceTypeList就是后台传过来的所有属性, <div class="uk-form ...