Remove a Node from a Singly Linked List
Remove the first node from a singly linked list:
public void deleteFirst() {
if(head==null) {
return;
}
Node current = head;
head = head.next;
current.next = null;
}

Java Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | /*Node of a single linked list of integer */ public class SinglyLinkedList { private static Node head; /* instance variable */ private static class Node { private int data; /* we assume data integer */ private Node next; /* Create a node with the given data and next node */ public Node(int data) { this.data = data; this.next = null; } } /* Display the single linked list */ public void display() { Node current = head; while (current != null) { System.out.print(current.data + " --> "); current = current.next; } System.out.println("null"); } //remove first public void removeFirst() { if(head==null) { return; } Node current = head; head = head.next; current.next = null; } public static void main(String[] args) { SinglyLinkedList s = new SinglyLinkedList(); s.head = new Node(10); Node second = new Node(7); Node third = new Node(20); Node fourth = new Node(8); s.head.next = second; // 10 --> 7 second.next = third; // 10 -->7 -->20 third.next = fourth; // 10 -->7 --> 20 -->8 -->null System.out.println("Before remove:"); s.display(); System.out.println("After remove:"); s.removeFirst(); // 7 --> 20 -->8 -->null s.display(); } } |
Output
Before remove: 10 --> 7 --> 20 --> 8 --> null After remove: 7 --> 20 --> 8 --> null
Remove the last node from a singly linked list:
public Node removeLast() {
if (head == null || head.next == null) {
return null;
}
Node current = head;
while (current.next.next != null) {
current = current.next;
}
current.next = null;
return head;
}
Java Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /*Node of a single linked list of integer */ public class SinglyLinkedList { private static Node head; /* instance variable */ private static class Node { private int data; /* we assume data integer */ private Node next; /* Create a node with the given data and next node */ public Node(int data) { this.data = data; this.next = null; } } /* Display the single linked list */ public void display() { Node current = head; while (current != null) { System.out.print(current.data + " --> "); current = current.next; } System.out.println("null"); } // remove last public Node removeLast() { if (head == null || head.next == null) { return null; } Node current = head; while (current.next.next != null) { current = current.next; } current.next = null; return head; } public static void main(String[] args) { SinglyLinkedList s = new SinglyLinkedList(); s.head = new Node(10); Node second = new Node(7); Node third = new Node(20); Node fourth = new Node(8); s.head.next = second; // 10 --> 7 second.next = third; // 10 -->7 --> 20 third.next = fourth; // 10 -->7 --> 20 --> 8 -->null System.out.println("Before remove:"); s.display(); System.out.println("After remove:"); head = s.removeLast(); // 10 -->7 --> 20 -->null s.display(); } } |
Output
Before remove: 10 --> 7 --> 20 --> 8 --> null After remove: 10 --> 7 --> 20 --> null
Remove a node from a singly linked list at a given position:
public void removePosition(int pos) {
if (head == null) {
return;
}
if (pos == 1) {
head = head.next;
return;
}
Node privious = head;
int currentPos = 1;
while (currentPos < pos - 1) {
privious = privious.next;
currentPos++;
}
Node corrent = privious.next;
privious.next = corrent.next;
}
Java Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | /*Node of a single linked list of integer */ public class SinglyLinkedList { private static Node head; /* instance variable */ private static class Node { private int data; /* we assume data integer */ private Node next; /* Create a node with the given data and next node */ public Node(int data) { this.data = data; this.next = null; } } /* Display the single linked list */ public void display() { Node current = head; while (current != null) { System.out.print(current.data + " --> "); current = current.next; } System.out.println("null"); } // remove a Linked List node at a given position public void removePosition(int pos) { // If linked list is empty if (head == null) { return; } // If head needs to be removed if (pos == 1) { head = head.next; return; } Node privious = head; int currentPos = 1; while (currentPos < pos - 1) { privious = privious.next; currentPos++; } Node corrent = privious.next; privious.next = corrent.next; } public static void main(String[] args) { SinglyLinkedList s = new SinglyLinkedList(); s.head = new Node(10); Node second = new Node(7); Node third = new Node(20); Node fourth = new Node(8); s.head.next = second; // 10 --> 7 second.next = third; // 10 -->7 --> 20 third.next = fourth; // 10 -->7 --> 20 --> 8 -->null System.out.print("Before remove: "); s.display(); System.out.println("After remove:"); System.out.print("remove head: "); s.removePosition(1); s.display(); // 7 --> 20 --> 8 --> null System.out.print("remove node position 2: "); s.removePosition(2); s.display(); // 7 --> 8 --> null } } |
Output
Before remove: 10 --> 7 --> 20 --> 8 --> null After remove: remove head: 7 --> 20 --> 8 --> null remove node position 2: 7 --> 8 --> null