Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class QueueY<Item> implements Iterable<Item> {
- private QueObj<Item> head;
- private QueObj<Item> tail;
- private int size;
- private static class QueObj<Item> {
- Item value;
- QueObj next;
- QueObj(Item value, QueObj next) {
- this.value = value;
- this.next = next;
- }
- }
- private class QueueIterator implements Iterator<Item> {
- QueObj current = head;
- @Override
- public boolean hasNext() {
- return (current != null);
- }
- @Override
- public Item next() {
- if (hasNext()) {
- QueObj<Item> item = current;
- current = item.next;
- return item.value;
- }
- return null;
- }
- }
- @Override
- public Iterator<Item> iterator() {
- return new QueueIterator();
- }
- public boolean isEmpty() {
- return (head == null);
- }
- public int size() {
- return size;
- }
- public void Enqueue(Item value)
- {
- if (isEmpty()) {
- tail = head = new QueObj<Item>(value, null);
- size++;
- }
- else
- {
- QueObj item = new QueObj (value, null );
- tail.next = item;
- tail = item;
- size++;
- }
- }
- public Item Dequeue()
- {
- Item result = head.value;
- head = head.next;
- if (head == null)
- tail = null;
- size--;
- return result;
- }
- }
Add Comment
Please, Sign In to add comment