Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Queue<T>
- {
- private Node<T> head;
- private Node<T> tail;
- private int size;
- private class Node<T>
- {
- private T thisElement;
- private Node<T> nextElement;
- public Node(T thisElement, Node<T> nextElement)
- {
- this.thisElement = thisElement;
- this.nextElement = nextElement;
- }
- }
- public Queue()
- {
- tail = new Node<T>(null, null);
- head = new Node<T>(null, tail);
- size = 0;
- }
- // Utilities for queue
- public boolean isEmpty()
- {
- return size == 0;
- }
- public int size()
- {
- return size;
- }
- //Insert an element
- public boolean offer(T element)
- {
- if(size == 0)
- {
- head.thisElement = element;
- size++;
- }
- else if(size == 1)
- {
- tail.thisElement = element;
- size++;
- }
- else
- {
- Node<T> temp = new Node<T>(element, null);
- tail.nextElement = temp;
- tail = temp;
- size++;
- }
- return true;
- }
- //Return head but do not remove it, or null if size == 0
- public T peek()
- {
- if(size == 0)
- {
- return null;
- }
- else
- {
- return head.thisElement;
- }
- }
- //Return head but do not remove it, or new Object if size == 0
- @SuppressWarnings("unchecked")
- public T element()
- {
- if(size == 0)
- {
- return (T) new Object();
- }
- else
- {
- return head.thisElement;
- }
- }
- //Return head and remove it, or null if size == 0
- public T pool()
- {
- if(size == 0)
- {
- return null;
- }
- else if(size == 1)
- {
- size--;
- return head.thisElement;
- }
- else
- {
- T tempElement = head.thisElement;
- head = head.nextElement;
- size--;
- return tempElement;
- }
- }
- //Return head and remove it, or new Object if size == 0
- @SuppressWarnings("unchecked")
- public T remove()
- {
- if(size == 0)
- {
- return (T) new Object();
- }
- else if(size == 1)
- {
- size--;
- return head.thisElement;
- }
- else
- {
- T tempElement = head.thisElement;
- head = head.nextElement;
- size--;
- return tempElement;
- }
- }
- }
Add Comment
Please, Sign In to add comment