Методы реализации очередей цикла с использованием Java:
1. Добавьте размер атрибута, чтобы записать количество элементов в настоящее время.
Цель - когда голова = задний. По размеру = 0 или размеру = длина массива. Чтобы различить очередь как пустую, или очередь заполнена.
2. Только элемент массива -1 хранится только в массиве, гарантируя, что задняя часть не будет равной головой после ее поворота. Это когда очередь полна. Задний+1 = голова, в середине есть только один элемент.
Когда задний = голова. Очередь должна быть пустой.
Типы согласованных операций на обоих концах очереди различны:
Конец, который может быть удален, называется главой команды, и такая операция также называется Dequeue;
Конец, который может быть вставлен, называется хвостом команды, и такая операция также называется Enqueue.
Схематическая диаграмма очереди
При внедрении очереди вы должны обратить внимание на феномен ложных переполнений. Как показано на последней картинке выше.
Поддельный переполнение, как видно на рисунке
Решение: используйте цепочку, что, очевидно, может. При хранении последовательно. Наше общее решение состоит в том, чтобы подключить его к концу и сформировать круговую очередь. Это полностью использует пространство для хранения очереди.
Диаграмма очерков петли:
На картинке выше. Фронт указывает на первый элемент в очереди. Задний указывает на следующую позицию в конце очереди.
Но все еще есть проблема: когда передняя и задняя точка в той же позиции означает, что это пустая команда или полна? Вы можете представить такую ситуацию.
Общие практики для решения этой проблемы:
Отметка используется для различения таких запутанных ситуаций.
Пожертвовать элементарным пространством. Когда спереди и сзади равны, они пусты. Когда следующее положение задней части спереди. Это полно.
Например, на следующем рисунке:
Ниже мы даем очередь петли и используем другой способ, то есть жертвуя пространством элемента, чтобы различать пустые и полные команды.
Несколько ключевых моментов:
1. Фронт указывает на голову команды. Задняя часть указывает на следующую позицию в конце команды.
2. Вывод о том, что команда пуста: спереди == задний; Вывод о том, что команда заполнена: (задний+1)%maxsize == Front.
импортировать java.io.*; открытый класс Queuearray {Object [] a; // массив объектов, очередь хранит до A.Length-1 объект int front; // из первого индекса сзади; // из End Script public Queuearray () {this (10); // вызовать другие конструкторы} public Queuearray (int size) {a = new Object [size]; Фронт = 0; задний = 0; } / *** Добавить объект к концу очереди* @param obj object* @return вернуть false, когда очередь заполнена, в противном случае True* / public boolean enqueue (Object obj) {if ((задний+1)%A.Length == Front) {return false; } a [задний] = obj; Задний = (задний+1)%A.Length; вернуть истину; } / *** Первый объект в головке очереди - это dequed* @return Объект объекта, когда очередь пуст* / public Object dequeue () {if (buld == Front) {return null; } Объект obj = a [front]; Front = (Front+1)%A.Length; вернуть OBJ; } public static void main (string [] args) {queeArray q = new queeArray (4); System.out.println (Q.enqueue ("Zhang San")); System.out.println (q.enqueue ("li si")); System.out.println (Q.enqueue ("Zhao Wu")); System.out.println (q.enqueue ("wang yi")); // не может войти в очередь, очередь заполнена для (int i = 0; i <4; i ++) {System.out.println (q.dequeue ()); }}}Приведенная выше резюме двух методов реализации круговых очередей на основе массивов Java - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.