> For the complete documentation index, see [llms.txt](https://blog.sunilgudivada.dev/notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.sunilgudivada.dev/notebook/data-structures-and-algorithms/topics/stacks-and-queues/queue-implementations.md).

# Queue Implementations

Queue implementation using array is difficult to maintain the position of the head and tail. Array resize, shrink are difficult to implement

## Using LinkedList

```java
public class LinkedListQueue {
  private Node head, tail;

  // Inner class
  private class Node {
    String item;
    Node next;
  }

  public boolean isEmpty() {
    return head == null;
  }

  // To insert an item
  public void enqueue(String item) {
    Node oldtail = tail;
    tail = new Node();
    tail.item = item;
    tail.next = null;
    if (isEmpty()) head = tail;
    else oldtail.next = tail;
  }

  // To remove and item
  public String dequeue() {
    String item = head.item;
    head = head.next;
    if (isEmpty()) tail = null;
    return item;
  }
}
```
