/
EugenyCh7
/
JavaAndScalaLessons
Обзор
Документация
Войти
/
EugenyCh7
/
JavaAndScalaLessons
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
JavaTest/src/ch2/ex16/Queue.java
69 строк
2 KB
Eugeny Chekmarev
IDEA update
15 июн 2021, 21:11
15 июн 2021, 21:11
47fadf9
Код
Авторство
О чём код?
package ch2.ex16; public class Queue<T> { private static class Node<T> { private Node<T> next; private T value; public Node() { // pass } public Node(T value) { this.value = value; } } public class Iterator { public T next() { return Queue.this.dequeue(); } public boolean hasNext() { return Queue.this.end != null; } } private Node<T> start = null; private Node<T> end = null; public Iterator iterator() { return new Iterator(); } public void enqueue(T value) { if (end == null) { end = new Node<>(value); start = end; } else { Node<T> temp = start; start = new Node<>(value); start.next = temp; } } public T dequeue() { if (end == null) return null; else { T value = end.value; if (start != end) { Node<T> pointer; for (pointer = start; pointer.next != end; pointer = pointer.next) ; pointer.next = null; end = pointer; } else start = end = null; return value; } } public int length() { if (end == null) return 0; int length; Node<T> pointer = start; for (length = 1; (pointer = pointer.next) != null; ++length) ; return length; } }