-->
当前位置:首页 > 题库 > 正文内容

编程题:队的基本操作

Luz4年前 (2021-09-07)题库912
给定一个初始为空的队(队空间长度为10)和一系列进队、出队操作,请编写程序输出经过这些操作后队中的元素。队中元素值均为整数。(采用循环队列完成,禁用一个空间方法)


### 输入格式:

输入第1行为1个正整数n,表示操作个数;

第2行为给出的n个整数,非0元素表示进队,且此非0值即为进队元素,0元素表示出队。

### 输出格式:

第一行按出队顺序输出所有出队元素,以一个空格隔开;如果队空时做出队操作会输出"EMPTY",如果队满时做进队操作会输出"FULL"。

第二行中输出队中所有元素,以一个空格隔开。

末尾均有一个空格。

### 输入样例:

in
12
3 1 2 0 0 -1 0 0 0 4 5 0


### 输出样例:

out
3 1 2 -1 EMPTY 4
5







答案:若无答案欢迎评论

评论列表

LZ1123
LZ1123
3年前 (2022-06-24)

#include
#include
#include
#define maxsize 10
typedef struct cir_queue {
int data[maxsize];
int rear;
int front;
}cir_queue;
cir_queue* init()
{
cir_queue* q = (cir_queue*)malloc(sizeof(cir_queue));
if (q == NULL) {
exit(0);
}
memset(q-˃data, 0, sizeof(q-˃data));
q-˃front = 0;
q-˃rear = 0;
return q;
}
void push(cir_queue* q, int data) {
if ((q-˃rear + 1) % maxsize == q-˃front)
{
printf("FULL ");
return;
}
else
{
q-˃data[q-˃rear] = data;
q-˃rear = (q-˃rear + 1) % maxsize;
}
}
void pop(cir_queue* q) {
if (q-˃rear == q-˃front)
{
printf("EMPTY ");
return;
}
else
{
printf("%d ", q-˃data[q-˃front]);
q-˃data[q-˃front] = 0;
q-˃front = (q-˃front + 1) % maxsize;
}
}
void print(cir_queue* q)
{
int i = q-˃front;
while (i != q-˃rear)
{
printf("%d ", q-˃data[i]);
i = (i + 1) % maxsize;
}
}
int main()
{

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。