1. Напишите это впереди
Очерки в структуре данных должны быть более знакомыми, что первым в первую очередь. Из -за порядка они называются очередями. Это как очередь. Вставка нового узла в конце фронта, удаление узла в First.jdk Collection Framework также обеспечивает интерфейс очереди. Этот интерфейс представляет очередь. Последовательные очереди: Arrayblockingqueue, LinkedBlockingqueue. (Вышеупомянутые двое-очередь цвета ног), а другой-ConcuryentLinkedQueue.
Основная реализация состоит из двух типов комбинированных списков. Реализация массивов будет иметь недостатки, что приведет к ложной полноте. В начале, когда очередь пуста, эталонные переменные первой эталонной переменной для хвоста являются нулевыми. Поскольку элементы очереди удалены, появится фронт+1, а задняя часть равна емкости базового массива. В последовательной структуре хранения фронт всегда сохраняет индекс элементов, которые собираются выходить из очереди в очереди, и задняя часть всегда сохраняет индекс элементов, которые должны быть введены в очередь. Количество элементов в очереди на заднем фронте. В последовательной очереди базовый слой представляет собой массив, поэтому сохраненные элементы данных не будут изменяться, и изменяются только две эталонные переменные, задние и спереди.
Что можно использовать для эффективного использования пространства, используя цепочку, так это то, что эталонные переменные занимают дополнительное пространство.
Общие операции для очередей:
1: инициализация
2: вернуть длину очереди
3: добавить элементы
4: Удалить элементы
5: доступ к элементу заголовка
6: доступ к элементам парного хвоста очереди
7: Определите, пуста ли очередь
8: Очистить очередь
2. Пользовательская реализация
Дисплей исходного кода ясно, поэтому нет необходимости вводить его
открытый класс LinkedQueue <t> {// Пользовательские цепные очереди. Нестатические внутренние классы для представления узла данных цепочки очереди @Suppresswarnings ("unared") public node () {} public node (t data, node next) {this.data = data; this.next = Далее; }} // Определите ссылку на головку и хвост цепного очереди Частный узел задней части; // Определите размер цепного стека Private Int Size; // Создать пустую цепь к колонну public linkedqueue () {front = null; rear=null;}//Create a chain-pair column with a certain element, and only one node public LinkedQueue(T element){front=new Node(element,null);//Point to the same element rear=front;size++;}//Return the size of the chain queue public int length(){return size;}//Return the element with the right header in the chain queue, and do not delete the header element public T elementFront () {if (! empty ()) {return front.data;} else {return null; }} // Доступ к последнему элементу очереди public t elementRear () {if (! Empty ()) {return bult.data; } else {return null; }} // возвращает, является ли текущая очередь пары цепей пустой public Boolean Empty () {return size == 0; } // очистить цепную очередь public void clear () {front = null; задний = null; size = 0;} // Вставить узел в очередь цепи-pare public void add (t element) {// Если столбец пары цепи пуст, создайте новый узел if (front == null) {buld = new Node (элемент, null); спереди = задний; } else {// динамично создавать новый узел узла newRear = new Node (element, null); BERT.NEXT = newRear; задний = newRear; } size ++;} // Удалить узел в очереди цепи и вернуть удаленный узел public t remove () {node oldfront = front; front = front.next; OldFront.next = null; размер--; return oldfront.data;} // вернуть очередь public String toString () {// Если очередь цепи - пустая очередь цепи равен if (empty ()) {return "[]"; } else {stringBuilder sbuilder = new StringBuilder ("["); for (node current = front; current! = null; current = current.next) {sbuilder.append (current.data.tostring ()+",");} int len = sbuilder.length (); return sbuilder.delete (len-1, len) .append ("]"). toString ();}} public static void main (string [] args) {linkedqueue <string> lqueue = new LinkedQueue <string> (); lqueue.add ("aaa"); lqueue.add ("bbb"); lqueue.add ("ccc"); lqueue.add ("ddd"); system.out.println ("Возвращает значение головного узла очереди:"+lqueue.elementfront ()); System.out.println ("Возвращает значение хвостового узла Очередь: "+lqueue.elementRear ()); System.out.println (lqueue.length ()); System.out.println (lqueue);}}Результаты работы:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.