Program to demonstrate implementation of Singly LinkedList in Java
public class ListNode { private int integerData; private ListNode nextNode; ListNode(int data) { this.integerData = data; } public int getIntegerData() { return integerData; } public void setIntegerData(int data) { this.integerData = data; } public ListNode getNextNode() { return nextNode; } public void setNextNode(ListNode next) { this.nextNode = next; } public static int listLength(ListNode head) { int length = 0; ListNode currentNode = head; while(currentNode != null) { length++; currentNode = currentNode.getNextNode(); } return length; } ListNode insert(ListNode head , ListNode nodeToInsert, int position) { if(head == null) { return nodeToInsert; } int size = listLength(head); if(position > size + 1 || position < 1) { System.out.println("Valid positions goes from 1 to "+ (size+1)); return head; } if(position == 1) { nodeToInsert.setNextNode(head); head = nodeToInsert; return nodeToInsert; } else { ListNode previousNode = head; int count = 1; while (count < position - 1) { previousNode = previousNode.getNextNode(); count++; } ListNode currentNode = previousNode.getNextNode(); nodeToInsert.setNextNode(currentNode); previousNode.setNextNode(nodeToInsert); } return head; } ListNode delete( ListNode head , int position) { int size = listLength(head); if (position > size || position < 1) { System.out.println("Valid deletions position is from 1 to " + size); return head; } if(position == 1) { ListNode currentNode = head.getNextNode(); head = null; return currentNode; } else { ListNode previousNode = head; int count = 1; while(count < position - 1) { previousNode = previousNode.getNextNode(); count++; } ListNode currentNode = previousNode.getNextNode(); previousNode.setNextNode(currentNode.getNextNode()); currentNode.setNextNode(null); } return head; } }