是白茶吖 2023-04-25 15:32 采纳率: 0%
浏览 52

实现一个普通顺序队列

要求实现一个普通顺序队列。

当输入1 2 3 -1时,输出为1 2 3 。

当输入为1 2 3 4 5 6 7 8 9 10 11 -1时,输出为

queue is full!

1 2 3 4 5 6 7 8 9 10

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-04-25 15:56
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,以下是c和c++ 分别实现方式。
    以下是 C 和 C++ 语言实现一个普通顺序队列的示例代码:

    C 语言实现:

    #include <stdio.h>
    
    #define MAX_SIZE 10
    
    int queue[MAX_SIZE];
    int front = 0;   // 队头指针
    int rear = 0;    // 队尾指针
    
    // 判断队列是否为空
    int is_empty() {
        return front == rear;
    }
    
    // 判断队列是否已满
    int is_full() {
        return rear == MAX_SIZE;
    }
    
    // 入队
    void enqueue(int x) {
        if (is_full()) {
            printf("queue is full!\n");
            return;
        }
        queue[rear++] = x;
    }
    
    // 出队
    int dequeue() {
        if (is_empty()) {
            printf("queue is empty!\n");
            return -1;
        }
        return queue[front++];
    }
    
    // 打印队列中的元素
    void print_queue() {
        if (is_empty()) {
            printf("queue is empty!\n");
            return;
        }
        for (int i = front; i < rear; i++) {
            printf("%d ", queue[i]);
        }
        printf("\n");
    }
    
    int main() {
        int x;
        while (1) {
            scanf("%d", &x);
            if (x == -1) {
                break;
            }
            enqueue(x);
        }
        print_queue();
        return 0;
    }
    

    C++ 语言实现:

    #include <iostream>
    
    #define MAX_SIZE 10
    
    int queue[MAX_SIZE];
    int front = 0;   // 队头指针
    int rear = 0;    // 队尾指针
    
    // 判断队列是否为空
    bool is_empty() {
        return front == rear;
    }
    
    // 判断队列是否已满
    bool is_full() {
        return rear == MAX_SIZE;
    }
    
    // 入队
    void enqueue(int x) {
        if (is_full()) {
            std::cout << "queue is full!" << std::endl;
            return;
        }
        queue[rear++] = x;
    }
    
    // 出队
    int dequeue() {
        if (is_empty()) {
            std::cout << "queue is empty!" << std::endl;
            return -1;
        }
        return queue[front++];
    }
    
    // 打印队列中的元素
    void print_queue() {
        if (is_empty()) {
            std::cout << "queue is empty!" << std::endl;
            return;
        }
        for (int i = front; i < rear; i++) {
            std::cout << queue[i] << " ";
        }
        std::cout << std::endl;
    }
    
    int main() {
        int x;
        while (1) {
            std::cin >> x;
            if (x == -1) {
                break;
            }
            enqueue(x);
        }
        print_queue();
        return 0;
    }
    

    以上代码实现了一个基本的顺序队列,包括判断队列是否为空、判断队列是否已满、入队、出队和打印队列中的元素等基本操作。当队列已满时,会输出"queue is full!",当队列为空时,会输出"queue is empty!"。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 4月25日