Practice #3
الدرس 11 من 12 في دورة Queue - سلسلة هياكل البيانات #2 على Coddy.
لنقم بترقية الطابور (Queue) إلى طابور دائري (circular queue)!
التحدي
سهلقم بترقية فئة 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;
}