#if !defined(SEQUENCE_QUEUE_H_LIELJE7398CNHD_INCLUDE_)
#define SEQUENCE_QUEUE_H_LIELJE7398CNHD_INCLUDE_
/
typedef int T;
struct SeqQueue { T* data; // 指向数据元素数组的指针int front; // 下一个出队元素的数组下标int rear; // 下一个入队元素应该存放的单元的数组下标int max;  // 队列中最多可放max-1个数据元素,留一个空数据单元以区分空和满
};SeqQueue* SQ_Create(int maxlen);
void SQ_Free(SeqQueue* sq);
void SQ_MakeEmpty(SeqQueue* sq);
bool SQ_IsEmpty(SeqQueue* sq);
bool SQ_IsFull(SeqQueue* sq);
int SQ_Length(SeqQueue* sq);bool SQ_In(SeqQueue* sq, T x);
bool SQ_Out(SeqQueue* sq, T& item);
bool SQ_Head(SeqQueue* sq, T& head);void SQ_Print(SeqQueue* sq);#endif
#include <stdio.h>
#include <stdlib.h>
#include "SeqQueue.h"
#include <string.h>
#pragma warning(disable:4996)int main()
{int maxlen;scanf("%d", &maxlen);SeqQueue* sq=SQ_Create(maxlen);char dowhat[100];while(true) {scanf("%s", dowhat);if (!strcmp(dowhat,"in")) {T x;scanf("%d", &x);SQ_In(sq,x);}else if (!strcmp(dowhat,"out")) {T item;SQ_Out(sq, item);}else {break;}}int length=SQ_Length(sq);printf("Queue length: %d\n", length);printf("Queue data: ");SQ_Print(sq);SQ_Free(sq);
}

#include <stdio.h>
#include <stdlib.h>
#include "SeqQueue.h"SeqQueue* SQ_Create(int maxlen)
// 创建顺序队列, 队列最多存储maxlen个队列元素
{SeqQueue* sq=(SeqQueue*)malloc(sizeof(SeqQueue));sq->data=(T*)malloc(sizeof(T)*(maxlen+1));sq->front=sq->rear=0;sq->max=maxlen+1;return sq;
}void SQ_Free(SeqQueue* sq)
// 释放队列空间,以删除队列
{free(sq->data);free(sq);
}void SQ_MakeEmpty(SeqQueue* sq)
// 将队列置空
{sq->front=0;sq->rear=0;
}bool SQ_IsEmpty(SeqQueue* sq)
// 判断队列是否为空,为空返回true,否则返回false。
{// 请在这里补充代码,完成本关任务return sq->front==sq->rear;}bool SQ_IsFull(SeqQueue* sq)
// 判断队列是否为满。为满返回true,否则返回false。
{// 请在这里补充代码,完成本关任务return (sq->rear+1)%sq->max==sq->front;}int SQ_Length(SeqQueue* sq)
// 队列长度
{// 请在这里补充代码,完成本关任务return (sq->rear-sq->front+sq->max)%sq->max;}bool SQ_In(SeqQueue* sq, T x)
// 将x入队。若入队失败(队列满),则返回false,否则返回true。
{if(SQ_IsFull(sq)){return false;}sq->data[sq->rear]=x;sq->rear=(sq->rear+1)%sq->max;return true;}bool SQ_Out(SeqQueue* sq, T& item)
// 从队列sq出队一个元素,返回时item为出队的元素的值。若出队成功(队列不为空),则返回true,否则(队列空),返回false,此时item不会返回有效值。
{if(SQ_IsEmpty(sq)){return false;}item=sq->data[sq->front];sq->front=(sq->front+1)%sq->max;return true;}bool SQ_Head(SeqQueue* sq, T& head)
// 获取队列头结点元素,返回时head保存头结点元素。
// 若获取失败(队列空),则返回值为false,否则返回值为true。
{if ( SQ_IsEmpty(sq) ){return false;}else {head = sq->data[sq->front];return true;}
}void SQ_Print(SeqQueue* sq)
// 依次打印出队列中的每个元素
{int i=sq->front;if (SQ_IsEmpty(sq)) {printf("queue is emtpy");return;}for (i=sq->front; i!=sq->rear; i=(i+1)%sq->max) {printf("%d  ", sq->data[i]);}printf("\n");
}

第1关:实现一个顺序存储的队列相关推荐

  1. python如何定义一个简单的队列

    哈哈,其实根本不需要用类(class)去定义一个队列(queue),因为我没有想到list结构竟然这么万能,它本身就是一个活生生的队列. 1.定义一个队列,其实就是一个列表哈哈,说明一下,队头在前面, ...

  2. Java LinkedList特有方法程序小解 使用LinkedList 模拟一个堆栈或者队列数据结构。...

    package Collection;import java.util.LinkedList;/* LinkedList:特有的方法 addFirst()/addLast(); getFirst()/ ...

  3. C# 模拟一个处理消息队列的线程类 Message Queue

    1 // 模拟一个处理消息队列的类 2 class MessageHandler 3 { 4 // 消息队列 5 private Queue<string> messageQue = ne ...

  4. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList;public cla ...

  5. 【转载!!】一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

    https://www.cnblogs.com/williamjie/p/9481780.html 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的 ...

  6. JAVA:实现一个CircularQueue循环队列算法(附完整源码)

    JAVA:实现一个CircularQueue循环队列算法 package com.thealgorithms.datastructures.queues; public class CircularQ ...

  7. Java实现自定义队列和树结构_实现二叉树的层序遍历,说说Java中的队列结构(实现一个Java的队列)...

    几次面试都被问到二叉树的层序遍历,需要用到队列这个数据结构,我一直想使用一个队列来实现,但是java里没有一种好的队列的数据结构,我又一次面试用ArrayList去当队列用,但是被面试官说到,是不对的 ...

  8. C++ 笔记 —— 实现一个环形阻塞队列

    实现原理 环形阻塞队列,顾名思义,首先,它是一个队列,然后,它应当是一个环形,并且它是会进行阻塞的.但是根据我们的常识,内存地址是用一个long long int来存储的,我们存储的数据的地址无法绕成 ...

  9. 给游戏中的士兵们排一个整齐的队列

    给游戏中的士兵们排一个整齐的队列 提示:本题是20220409美团笔试题2 熟悉数据结构,想到解决方法,很重要 比较器的运用是很重要的能力 文章目录 给游戏中的士兵们排一个整齐的队列 题目: 一.审题 ...

最新文章

  1. 腾讯某员工哀叹:门口卖早点的送孩子去私立了,一年学费顶我一年工资!
  2. java-多线程操作全(Thread)-Timer简单使用
  3. python中的内置函数返回元素_Python内置函数_________用来返回数值型序列中所有元素之和。...
  4. 【iOS开发】理解Action、IBACtion、Action Connection
  5. puppeteer中如何复用启动中的浏览器
  6. NUC1158 Lake Counting【DFS】
  7. lintcode--报数
  8. 计算机考试专业知识题库,专业知识:计算机考试题库练习题
  9. GEE|typeof、ee.Algorithms.If、ee.Algorithms.IsEqual 语法
  10. cad小插件文字刷_CAD实用小插件,这是一串让你效率提升相见恨晚的代码!
  11. 12种常见贴片焊接工具
  12. Calendar日期类使用总结
  13. 电脑黑屏只有鼠标箭头怎么修复 电脑开机黑屏的修复办法
  14. 竟可监控员工离职倾向!一系统引发大争议
  15. Word字体的字号与像素对应关系
  16. 【WPS-OFFICE-Word】 WPS中样式的运作原理?样式自动更新、自动改变如何处理?样式的管理方法?
  17. 微信公众平台运营的关键是数据实时掌握——数据分析
  18. python操作数据库统计_python数据库-MySQL单表查询基本操作(50)
  19. 计算机主机编码怎么查看,cpuz如何查看cpu编码
  20. 威联通硬盘休眠并添加开机自启动

热门文章

  1. 大数据背后的神秘定理:贝叶斯公式
  2. 卷积神经网络如何处理一维时间序列数据?
  3. 一文看懂自动驾驶关键技术
  4. android 虚线
  5. haproxy 反向代理 tomcat (https、负载均衡)
  6. 【Git 第2课】 GitHub是什么?
  7. ckeditor4.4.6添加代码高亮
  8. 扫盲:关于Android手机内存ROM、RAM还有SD卡的解释
  9. CSS有效的编写代码
  10. Dan Gillmor总结微软付费平息纠纷历史