#c
#c
Вопрос:
#include <iostream>
#include <queue> // подключили библиотеку queue
using namespace std;
int main() {
setlocale(LC_ALL,"rus");
queue <int> q; // создали очередь q
cout << "Пользователь, пожалуйста введите 7 чисел: " << endl;
for (int h = 0; h < 7; h ) {
int a;
cin >> a;
q.push(a); // добавляем в очередь элементы
}
cout << endl;
cout << "Самый первый элемент в очереди: " << q.front() << endl; // выводим первый
// элемент очереди
q.pop(); // удаляем элемент из очереди
cout << "Новый первый элемент (после удаления): " << q.front() << endl;
if (!q.empty()) cout << "Очередь не пуста!"; // проверяем пуста ли очередь (нет)
system("pause");
return 0;
}
Я хочу вставить ‘0’ в середину очереди, если количество элементов четное, а если нечетное, то после среднего элемента.
Комментарии:
1. Почему вы хотите вставить что-то в середину очереди? Почему вы вообще используете очередь?
Ответ №1:
Переключение очереди не допускается. В очереди нет операции для вставки в середину. Таким образом, queue, вероятно, не является хорошим выбором структуры данных для вашего варианта использования.
Для достижения соответствующего результата можно использовать следующий алгоритм:
repeat initial size / 2 times:
push front element of the old queue into a new one
pop element from the front of the old queue
push the new element
repeat until queue is empty
push front element of the old queue into a new one
pop element from the front of the old queue
Обратите внимание, что это имеет линейную сложность.
Комментарии:
1. можете ли вы объяснить это с помощью примера кодирования на c или java, который мне очень понравился
Ответ №2:
С помощью a queue
вы не можете этого сделать, так как это недопустимая операция. Но если вам действительно нужно это сделать, вы можете создать две очереди, а во второй нажимать элементы первой очереди до тех пор, пока не будет достигнута средняя или одна после средней позиции, а затем нажать ‘0’, а затем нажать остальные элементы.
Или вам следует рассмотреть структуру данных, которая позволяет вставлять в середину, если очередь не является принудительной!