Каким будет код для реализации оптимизированной версии queue в C++?
Эта проблема должна быть решена с помощью c++, и это будет полезно, если вы напишете код. я также написал код. но он не работает.
#include <iostream> #include <cassert> #define MAX 5 using namespace std; class queue{ public: queue(); void Enqueue(int); int Dequeue(); int size() const; bool isEmpty() const; private: int arr[MAX]; int sz; int front_idx,back_idx; }; queue :: queue(){ sz = 0; front_idx = 0; back_idx = 0; } void queue :: Enqueue(int val){ if(sz == 5){ //Queue Overflow assert(""); } else{ arr[back_idx] = val; sz++; back_idx = (back_idx + 1) % MAX; } } int queue :: Dequeue(){ if(sz == 0){ //Queue Underflow. assert(""); } else{ int ret_val = arr[front_idx]; front_idx = (front_idx+1) % MAX; sz--; return ret_val; } } int queue :: size() const{ return sz; } bool queue :: isEmpty() const{ return (sz == 0); } int main() { queue q; q.Enqueue(5); q.Enqueue(3); q.Enqueue(2); printf("%d\n",q.Dequeue()); printf("%d\n",q.Dequeue()); q.Enqueue(1); printf("%d\n",q.Dequeue()); printf("%d\n",q.Dequeue()); }
Что я уже пробовал:
я пытался поставить в очередь , удалить из очереди и для отображения также, но код не работает.
Patrice T
- я тоже написал этот код. но он не работает."
Покажите свой код, и мы поможем его исправить.
Member 13739181
хорошо, я даю, но. но лучше будет получить главный ответ, а теперь я даю вам свой код.
#include <iostream>
#включить <cassert>
#определите максимум 5
использование пространства имен std;
очередь классов{
общественный:
очередь();
void Enqueue(int);
инт извлечения();
int size() const;
bool isEmpty() const;
частный:
int arr[Макс];
int sz;
инт front_idx,back_idx;
};
очереди : очереди(){
sz = 0;
front_idx = 0;
back_idx = 0;
}
void queue :: Enqueue(int val){
если(sz == 5){
//Переполнение Очереди
утверждать("");
}
еще{
arr[back_idx] = val;
СЗ++;
back_idx = (back_idx + 1) % MAX;
}
}
очереди инт :: извлечения(){
если(sz == 0){
//Недостаточный Поток Очереди.
утверждать("");
}
еще{
инт ret_val = ОБР[front_idx];
front_idx = (front_idx+1) % MAX;
СЗ--;
вернуться ret_val;
}
}
int queue :: size() const{
возврат sz;
}
bool queue :: isEmpty() const{
возврат (sz == 0);
}
тап_п()
{
очереди вопрос;
q.Enqueue(5);
q.Enqueue(3);
q.Enqueue(2);
printf("%d\n",q.Dequeue());
printf("%d\n",q.Dequeue());
q.Enqueue(1);
printf("%d\n",q.Dequeue());
printf("%d\n",q.Dequeue());
}
А ТЕПЕРЬ СКАЖИТЕ МНЕ, ЭТО НАЗЫВАЕТСЯ ОПТИМИЗАЦИЕЙ? ДАЙ МНЕ ПРАВИЛЬНЫЙ КОД.
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Member 13739181
а как насчет кода?
вы что-нибудь написали?
Dave Kreskowiak
Ты упускаешь главное. Вы не получите никакого кода, написанного для вас. Перестань требовать этого.
Member 13739181
расскажите мне об оптимизации.
Dave Kreskowiak
Это не имеет ничего общего с оптимизацией. Вы должны отладить свой код, чтобы выяснить, почему он не работает так, как ожидалось.
Member 13739181
я должен отдать ввода, то вариант придет как ставить в очередь или удалять или дисплей. расскажи мне об этом
Patrice T
Обновил свой вопрос