DSA Linkedlist
DSA Linkedlist
return head;
}
Node* removeFirstNode(Node* head) Node* removeLastNode(Node* head) Node* deleteAtPosition(Node* head, int position)
{ { {
// If the list is empty or the position is invalid
if (head == nullptr) if (head == nullptr) if (head == nullptr || position < 1) {
return nullptr; return nullptr; return head;
Node* temp = head; }
head = head->next; if (head->next == nullptr) {
delete head; // If the head needs to be deleted
if (position == 1) {
delete temp; return nullptr; Node* temp = head;
} head = head->next;
return head; delete temp;
} // Find the second last node return head;
}
Node* second_last = head;
while (second_last->next->next != nullptr) // Traverse to the node before the position to be deleted
second_last = second_last->next; Node* current = head;
for (int i = 1; i < position - 1 && current != nullptr; i++) {
// Delete last node current = current->next;
}
delete (second_last->next);
// If the position is out of range
// Change next of second last if (current == NULL || current->next == nullptr) {
second_last->next = nullptr; return;
}
return head;
// Store the node to be deleted
} Node* temp = current->next;
return head;
}