what is in the head and tail of a linked list code example
Example: linked list head and tail
import java.util.Iterator;
// Custom Linked List class using Generics
class List implements Iterable {
Node head, tail;
// add new Element at tail of the linked list in O(1)
public void add(T data)
{
Node node = new Node<>(data, null);
if (head == null)
tail = head = node;
else {
tail.setNext(node);
tail = node;
}
}
// return Head
public Node getHead()
{
return head;
}
// return Tail
public Node getTail()
{
return tail;
}
// return Iterator instance
public Iterator iterator()
{
return new ListIterator(this);
}
}
class ListIterator implements Iterator {
Node current;
// initialize pointer to head of the list for iteration
public ListIterator(List list)
{
current = list.getHead();
}
// returns false if next element does not exist
public boolean hasNext()
{
return current != null;
}
// return current data and update pointer
public T next()
{
T data = current.getData();
current = current.getNext();
return data;
}
// implement if needed
public void remove()
{
throw new UnsupportedOperationException();
}
}
// Constituent Node of Linked List
class Node {
T data;
Node next;
public Node(T data, Node next)
{
this.data = data;
this.next = next;
}
// Setter getter methods for Data and Next Pointer
public void setData(T data)
{
this.data = data;
}
public void setNext(Node next)
{
this.next = next;
}
public T getData()
{
return data;
}
public Node getNext()
{
return next;
}
}
// Driver class
class Main {
public static void main(String[] args)
{
// Create Linked List
List myList = new List<>();
// Add Elements
myList.add("abc");
myList.add("mno");
myList.add("pqr");
myList.add("xyz");
// Iterate through the list using For Each Loop
for (String string : myList)
System.out.println(string);
}
}