Возможно ли реализовать круговую очередь с использованием array
без наличия счетчика для подсчета количества элементов в очереди или без потери какой-либо записи массива?Циркулярная очередь, не теряя при этом запись или используя счетчик
Что я думаю:
Это невозможно, давайте предположим, что у нас есть два указателя front
и rear
, первый указывает на первый элемент очереди,
мы можем определить задний указатель в два способа:
1.it указывает на последний элемент, который был вставлен в очередь, поэтому следующая запись является возможным местом для следующего элемента, который будет вставлен
2.It указывает на место, где будет вставлен следующий элемент.
В любом случае мы не можем различить полную пустую очередь &, если мы не тратим хотя бы одну запись массива, t держать счетчик счетчик the number of inserted - number of deleted elements
Это интересный подход, но вы по-прежнему технически теряете немного, чтобы отслеживать пустой или полный бит знака. Это хороший выбор, на мой взгляд, потому что очередь, которая исчерпывает 2 миллиарда, рассчитывается на 4-байтовый размер, будет иметь другие проблемы. +1 к вам. –
первая опечатка? Первый означает фронт? – RootPhoenix