【PTA数据结构 | C语言版】顺序队列的3个操作

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

题目

请编写程序,将 n+1 个整数顺序压入容量为 n 的队列,随后执行 n+1 次取队首并出队的操作。

输入格式:

输入首先在第一行给出正整数 n(≤10^4 );随后一行给出 n+1 个 int 范围内的整数,数字间以空格分隔。

输出格式:

将输入的n+1 个整数顺序压入容量为 n 的队列,随后执行 n+1 次取队首并出队的操作,输出取出的元素的值,每行一个。

注意:当队列已满时,入队操作应该不执行,并在一行中输出错误信息 错误:队列已满。;当队列为空时,取队首和出队操作应该不执行,并在一行中输出错误信息 错误:队列为空。。空队列取队首应返回 -1。

输入样例:

5

1 2 3 4 5 6

输出样例:

错误:队列已满。

1

2

3

4

5

错误:队列为空。

-1

错误:队列为空。

代码

cpp 复制代码
#include <stdio.h>

#define MAX_SIZE 10000

int queue[MAX_SIZE];
int front = 0, rear = 0;
int count = 0;  // 记录队列中元素的数量

// 入队操作
void enqueue(int value, int n) {
    if (count >= n) {
        printf("错误:队列已满。\n");
        return;
    }
    queue[rear] = value;
    rear = (rear + 1) % MAX_SIZE;
    count++;
}

// 出队操作
int dequeue() {
    if (count <= 0) {
        printf("错误:队列为空。\n");
        return -1;
    }
    int value = queue[front];
    front = (front + 1) % MAX_SIZE;
    count--;
    return value;
}

// 获取队首元素
int peek() {
    if (count <= 0) {
        printf("错误:队列为空。\n");
        return -1;
    }
    return queue[front];
}

int main() {
    int n;
    scanf("%d", &n);
    
    // 入队n+1个元素
    for (int i = 0; i < n + 1; i++) {
        int num;
        scanf("%d", &num);
        enqueue(num, n);
    }
    
    // 执行n+1次取队首和出队
    for (int i = 0; i < n + 1; i++) {
        int front_val = peek();
        if (front_val != -1) {
            printf("%d\n", front_val);
        } else {
            printf("%d\n", -1);
        }
        dequeue();
    }
    
    return 0;
}    
相关推荐
学逆向的8 小时前
C 局部静态变量
c语言·开发语言·网络安全
UIU1148 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场9 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi9 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David10 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
碧海银沙音频科技研究院10 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper
niyongsheng11 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
叉烧滑蛋13 小时前
B站台湾大学郭彦甫|MATLAB 学习笔记|04 变量与档案存取
数据结构
j7~13 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
傅科摆 _ py14 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法