# Java Program For Deleting A Linked List Node At A Given Position

• Last Updated : 29 Dec, 2021

Given a singly linked list and a position, delete a linked list node at the given position.

Example:

```Input: position = 1, Linked List = 8->2->3->1->7

Input: position = 0, Linked List = 8->2->3->1->7

If the node to be deleted is the root, simply delete it. To delete a middle node, we must have a pointer to the node previous to the node to be deleted. So if positions are not zero, we run a loop position-1 times and get a pointer to the previous node.

Below is the implementation of the above idea.

## Java

 `// A complete working Java program to delete a node in a linked list``// at a given position``class` `LinkedList``{``    ``Node head;  ``// head of list`` ` `    ``/* Linked list Node*/``    ``class` `Node``    ``{``        ``int` `data;``        ``Node next;``        ``Node(``int` `d)``        ``{``            ``data = d;``            ``next = ``null``;``        ``}``    ``}`` ` `    ``/* Inserts a new Node at front of the list. */``    ``public` `void` `push(``int` `new_data)``    ``{``        ``/* 1 & 2: Allocate the Node &``                  ``Put in the data*/``        ``Node new_node = ``new` `Node(new_data);`` ` `        ``/* 3. Make next of new Node as head */``        ``new_node.next = head;`` ` `        ``/* 4. Move the head to point to new Node */``        ``head = new_node;``    ``}`` ` `    ``/* Given a reference (pointer to pointer) to the head of a list``       ``and a position, deletes the node at the given position */``    ``void` `deleteNode(``int` `position)``    ``{``        ``// If linked list is empty``        ``if` `(head == ``null``)``            ``return``;`` ` `        ``// Store head node``        ``Node temp = head;`` ` `        ``// If head needs to be removed``        ``if` `(position == ``0``)``        ``{``            ``head = temp.next;   ``// Change head``            ``return``;``        ``}`` ` `        ``// Find previous node of the node to be deleted``        ``for` `(``int` `i=``0``; temp!=``null` `&& inext is the node to be deleted``        ``// Store pointer to the next of node to be deleted``        ``Node next = temp.next.next;`` ` `        ``temp.next = next;  ``// Unlink the deleted node from list``    ``}`` ` `    ``/* This function prints contents of linked list starting from``        ``the given node */``    ``public` `void` `printList()``    ``{``        ``Node tnode = head;``        ``while` `(tnode != ``null``)``        ``{``            ``System.out.print(tnode.data+``" "``);``            ``tnode = tnode.next;``        ``}``    ``}`` ` `    ``/* Driver program to test above functions. Ideally this function``       ``should be in a separate user class.  It is kept here to keep``       ``code compact */``    ``public` `static` `void` `main(String[] args)``    ``{``        ``/* Start with the empty list */``        ``LinkedList llist = ``new` `LinkedList();`` ` `        ``llist.push(``7``);``        ``llist.push(``1``);``        ``llist.push(``3``);``        ``llist.push(``2``);``        ``llist.push(``8``);`` ` `        ``System.out.println("``Created Linked list is: ");``        ``llist.printList();`` ` `        ``llist.deleteNode(``4``);  ``// Delete node at position 4`` ` `        ``System.out.println("``Linked List after Deletion at position ``4``: ");``        ``llist.printList();``    ``}``}`

Output:

```Created Linked List:
8  2  3  1  7
Linked List after Deletion at position 4:
8  2  3  1 ```

Please refer complete article on Delete a Linked List node at a given position for more details!

My Personal Notes arrow_drop_up