Implement a custom linked list with add and iteration functionality.

Write a program to implement custom linked list with minimum functionalities like add and iterations. You can not use in-build functionality of collection framework.

package ztest;

import java.util.Iterator;

public class CustomLinkedList implements Iterable{
 private int size = 0;
 
 private Node first;
 
 private Node last;
 
 private static class Node{
  Object element;
  Node next;
  public Node(Object element) {
   this.element = element;
  }
 }

 public void add(Object element){
  Node newNode = new Node(element);
  Node preLast = this.last;
  this.last = newNode;
  
  if(this.first == null){
   this.first = newNode;
  }else{
   preLast.next = newNode;
  }
  size++;
 }

 private class CustomListIterator implements Iterator{
  int cursor;
  Node currentNode = first;
  
  @Override
  public boolean hasNext() {
   return cursor < size;
  }

  @Override
  public Object next() {
   Node tempNode = currentNode;
   currentNode = currentNode.next;
   cursor++;
   return tempNode.element;
  }
  
 }
 @Override
 public Iterator iterator() {
  return new CustomListIterator();  
 }

 public static void main(String[] args) {
  CustomLinkedList customLinkedList = new CustomLinkedList();
  
  customLinkedList.add(1);
  customLinkedList.add(4);
  customLinkedList.add(6);
  for (Object object : customLinkedList) {
   System.out.println(object);
  } 
  
 }
}

Comments

Popular posts from this blog

Data types and Literals in Java

How to define Auxiliary Constructor in case class in Scala

equals() method of Object class in Java