循环队列,有一个隐藏测试集死活过不了,能帮忙看看是什么原因吗?
已知测试集:
测试输入(已通过):
10 7
enqueue 30
enqueue 98
dequeue
enqueue 96
dequeue
dequeue
enqueue 0
预期输出:
0 The queue is Empty
输入说明:
第一行n m分别表示循环队列大小、入队出队操作记录数量。
接下来m行,enqueue表示入队操作,后面接待入队元素;dequeue表示出队操作。
输出说明:
输出m个操作之后的所有队列元素。
任务代码(begin到end之间)
//
// queue_.cpp
// Queue
//
// Created by ljpc on 2018/5/29.
// Copyright © 2018年 ljpc. All rights reserved.
//
#include "queue_.h"
void creatQueue(Queue* que, int maxSize)
// 创建一个循环队列指针que,队列最大长度为maxSize
{
que->maxSize = maxSize;
que->data = (int*)malloc(maxSize * sizeof(int));
que->front = que->rear = 0;
}
void destroyQueue(Queue* que)
// 释放队列内存空间
{
free(que->data);
}
bool isFull(Queue* que)
// 判断队列que是否为满
// 若满返回 true 并在一行打印 The queue is Full 末尾换行!!!
// 否则返回 false
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if((que->rear+1)%que->maxSize == que->front){
printf("The queue is Full\n");
return true;
}
return false;
/********** End **********/
}
bool isEmpty(Queue* que)
// 判断队列que是否为空
// 若空返回 true 并在一行打印 The queue is Empty 末尾换行!!!
// 否则返回 false
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if(que->front == que->rear){
printf("The queue is Empty\n");
return true;
}
return false;
/********** End **********/
}
int enQueue(Queue* que, int item)
// 实现入队操作:将元素item加入队列que尾部
// 若队列没满,编写加入操作,返回 1
// 若队列满了,不做任何操作,返回 -1
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if ((que->rear+1)%que->maxSize == que->front) return -1;
*(que->data+que->rear) = item;
que->rear = (que->rear+1)%que->maxSize;
return 1;
/********** End **********/
}
int deQueue(Queue* que)
// 实现出队操作:移除队列que首部元素,并返回元素值
{
// 请在这里补充代码,完成本关任务
/********** Begin *********/
if (que->front == que->rear) return -1;
int x = que->data[que->front];
que->front = (que->front+1)%que->maxSize;
return x;
/********** End **********/
}
void printQueue(Queue* que)
// 打印队列
{
while (isEmpty(que)==false) {
int item = deQueue(que);
printf("%d ", item);
}
}
题目给定主函数
//
// main.cpp
// Queue
//
// Created by ljpc on 2018/5/29.
// Copyright © 2018年 ljpc. All rights reserved.
//
#include "queue_.h"
int main(int argc, const char * argv[]) {
// insert code here...
int n, m, item;
char str[20];
scanf("%d %d",&n ,&m);
Queue que;
creatQueue(&que, n);
for (int i=0; i<m; i++) {
scanf("%s", str);
if(str[0]=='e'){
scanf("%d", &item);
enQueue(&que, item);
}
else{
deQueue(&que);
}
}
printQueue(&que);
destroyQueue(&que);
return 0;
}
queue_.h
//
// queue_.h
// Queue
//
// Created by ljpc on 2018/5/29.
// Copyright © 2018年 ljpc. All rights reserved.
//
#ifndef queue__h
#define queue__h
#include <iostream>
struct Queue{
int maxSize; // 队列最大长度
int *data; // 数据指针
int front; // 头指针索引
int rear; // 尾指针索引
Queue(){data=NULL;}
};
void creatQueue(Queue* que, int maxSize);
// 创建一个循环队列指针que,队列最大长度为maxSize
void destroyQueue(Queue* que);
// 释放队列内存空间
bool isFull(Queue* que);
// 判断队列que是否为满
// 若满返回 true 并在一行打印 The queue is Full 末尾换行!!!
// 否则返回 false
bool isEmpty(Queue* que);
// 判断队列que是否为空
// 若空返回 true 并在一行打印 The queue is Empty 末尾换行!!!
// 否则返回 false
int enQueue(Queue* que, int item);
// 实现入队操作:将元素item加入队列que尾部
// 若队列没满,编写加入操作,返回 1
// 若队列满了,不做任何操作,返回 -1
int deQueue(Queue* que);
// 实现出队操作:移除队列que首部元素,并返回元素值
void printQueue(Queue* que);
// 打印队列
#endif /* queue__h */
...全文
相关推荐
BP神经网络模型训练集及测试集.zip
在BP神经网络中,输入层连接到隐藏层,隐藏层再连接到输出层。每个神经元都有一个激活函数,如Sigmoid或ReLU,用于非线性转换输入信号。
Kaggle猫狗识别测试集
这些网络通常由多个隐藏层组成,每一层都包含大量的神经元,它们通过权重连接形成一个复杂的计算图。在图像识别任务中,深度学习模型能够自动从输入图像中提取特征,从而实现分类。
军事机器阅读测试集.zip
《军事机器阅读测试集》是针对中文阅读理解能力的一个数据集,主要应用于深度学习领域的研究。
模型训练loss异常原因.docx
* 调整网络结构:调整网络结构,例如增加或减少隐藏层,调整激活函数等。
Aprior和DIC算法(包括测试集)
在数据挖掘领域,Apriori和DIC是两种广泛使用的关联规则学习算法,它们主要用于发现大量数据集中隐藏的有趣关系或模式。


