For understanding the concepts, I've implemented the Queue
data structures using a linked list. Is there anything to improve?
LinkList.java
public class LinkList {
private static class Node<T> {
private final T data;
private Node next;
public Node(T data){
this.data=data;
}
public void displayNode(){
System.out.print(data+ " ");
}
}
private Node first = null;
private Node last = null;
public boolean isEmpty() {
return (first == null);
}
public <T> void addLast(T data) {
Node n = new Node(data);
if (isEmpty()) {
n.next = first;
first = n;
last = n;
} else {
last.next = n;
last = n;
last.next = null;
}
}
public void removeFirst() {
Node temp = first;
if (first.next == null)
last = null;
first = first.next;
}
public void displayList() {
Node current = first;
while (current != null) {
current.displayNode();
current = current.next;
}
}
}
LinkListQueue.java
public class LinkListQueue {
LinkList newLinkList = new LinkList();
public <T> void enqueue(T data) {
newLinkList.addLast(data);
}
public void dequeue() {
if(!newLinkList.isEmpty())
newLinkList.removeFirst();
}
public void displayQueue() {
newLinkList.displayList();
System.out.println();
}
public boolean isEmpty(){
return newLinkList.isEmpty();
}
}
LinkListQueueDemo.java
public class LinkListqueueDemo {
public static void main(String[] args) {
LinkListQueue queueImpl = new LinkListQueue();
queueImpl.enqueue("A");
queueImpl.enqueue("B");
queueImpl.enqueue("C");
queueImpl.enqueue("D");
queueImpl.displayQueue();
queueImpl.dequeue();
queueImpl.displayQueue();
}
}
null
. \$\endgroup\$