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

news/2024/6/28 18:00:57
#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");
}

http://lihuaxi.xjx100.cn/news/285943.html

相关文章

小雨坐地铁--[最短路分层建图+虚点]

也是第一次接触这种分层建图的最短路 思路&#xff1a;由题目我们可以知道某些站点是可以连接好几条地铁线路的&#xff0c;那么对于每条地铁线路我们可以把他当成一幅图来算。当然图是个无向图&#xff0c;所以要加两次边。 add(i*nx,i*npre,b); //乘i的话就是说把他建在第i…

Google经典面试题解析

作者 | Alex Golec译者 | 弯月责编 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在深入问题之前&#xff0c;有一个令人振奋的消息&#xff1a;我离开了Google&#xff01;我激动地宣布&#xff0c;我已经加入了Reddit&#xff0c;并在纽约市担任项目经理…

树形dp ---- gym101655 D - Delta Quadrant 树上连通块思维换根 + 树形dp

题目链接 题目大意&#xff1a; 给你一颗NNN个节点的树&#xff0c;树上每条边有边权就是遍历的时间&#xff0c;你可以从任意节点出发遍历N−kN-kN−k个点并且回到出发点&#xff0c;问你最短的时间是多少&#xff1f; k∈[0,min(N,20)],N∈[1,1e4]k\in[0,min(N,20)],N\in[1,…

任正非:要感谢特朗普,他一吓唬,治好了华为人的富裕病,都努力工作了

华为“心声社区”前几日公布了任正非接受北欧媒体采访的纪要。据纪要显示&#xff0c;前几日任正非接受采访&#xff0c;参与采访的记者来自瑞典国家电视台、丹麦广播公司等多家媒体。任正非在采访中就华为建筑的欧式设计、美国总统特朗普、5G和人工智能等问题作答。任正非(图源…

寒假要完成的任务

这个寒假&#xff0c;我要做的很多&#xff0c;一下是我做了一小的总结&#xff0c;便于提醒自己。 我要做的有这个几个&#xff1a;1.蓝桥杯&#xff0c;每天2道题2.学习Heberate ,spring &#xff0c;三大框架3.做项目&#xff0c;学习android4.去完成计算机网络三、四级&…

《中国人工智能ABC人才发展报告》发布,算法和应用类人才短缺

近日&#xff0c;百度云联手中国传媒大学、BOSS 直聘和百度指数发布了《中国人工智能 ABC 人才发展报告&#xff08;2018版&#xff09;》&#xff08;以下简称“报告”&#xff09;和百度云智学院2019 年人才认证体系。报告指出&#xff0c;从 2018 年的人才供需状况来看&…

Codeforces Round #640 (Div. 4)(ABCDEG题解)

文章目录A. Sum of Round NumbersB - Same Parity SummandsC - K-th Not Divisible by nD - Alice, Bob and CandiesE - Special ElementsF. Binary String ReconstructionG - Special PermutationA. Sum of Round Numbers 题解&#xff1a;把他一个整数拆分&#xff0c;模拟一…

第1关:实现一个顺序存储的线性表

#if !defined(Seqlist__CIELSI_989SE_AJIEZN_728JULC__INCLUDED_) #define Seqlist__CIELSI_989SE_AJIEZN_728JULC__INCLUDED_ typedef int T; // 数据元素的数据类型 struct SeqList{T* data; // 数据元素的开始地址int len; // 当前长度int max; // 线性表的最大长度 };SeqL…