Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Practice #3

الدرس 11 من 12 في دورة Queue - سلسلة هياكل البيانات #2 على Coddy.

لنقم بترقية الطابور (Queue) إلى طابور دائري (circular queue)!

challenge icon

التحدي

سهل

قم بترقية فئة Queue الخاصة بك لدعم الطابور الدائري (circular queue)، وأعد تسمية الفئة إلى CircularQueue.

يأخذ المُنشئ (constructor) عدداً صحيحاً — وهو الحجم الأقصى للطابور الدائري. عندما يكون الطابور ممتلئاً ويتم إدراج عنصر جديد (enqueue)، يتمت إزالة أقدم عنصر (الموجود في المقدمة) لإفساح المجال. قم بتحديث الأساليب (methods) الأخرى لدعم ذلك.

جرّب بنفسك

#include <iostream>
#include <sstream>
#include <string>
#include "circular_queue.h"

int main() {
    std::string line;
    std::getline(std::cin, line);
    CircularQueue q(std::stoi(line));
    while (std::getline(std::cin, line)) {
        std::istringstream iss(line);
        std::string cmd;
        if (!(iss >> cmd)) continue;
        if (cmd == "enqueue") {
            int x; iss >> x; q.enqueue(x);
        }
        if (cmd == "dequeue") {
            q.dequeue();
        }
        if (cmd == "front") {
            std::cout << q.front() << std::endl;
        }
        if (cmd == "rear") {
            std::cout << q.rear() << std::endl;
        }
        if (cmd == "size") {
            std::cout << q.size() << std::endl;
        }
    }
    return 0;
}

جميع دروس Queue - سلسلة هياكل البيانات #2