Merge Two Sorted Lists
Procedure to merge two sorted linked lists.
Last updated
Was this helpful?
Procedure to merge two sorted linked lists.
Last updated
Was this helpful?
Was this helpful?
void merge(struct node *first, struct node *second) {
// A pointer to keep track of last node of merged list
struct node *last;
// First node of merged list
if (first -> data < second -> data) {
// Set head and tail of merged list
third = last = first;
// Move forward in first list
first = first -> next;
} else {
// Set head and tail of merged list
third = last = second;
// Move forward in second list
second = second -> next;
}
third -> next = NULL;
// Remaining node of merged list
while (first && second) {
if(first -> data < second -> data) {
// Next node will be first's node
last -> next = first;
// Update the last pointer
last = first;
first = first -> next;
} else {
// Next node will be second's node
last -> next = second;
// Update the last pointer
last = second;
second = second -> next;
}
}
// Merging remaining elements of first list (if any)
if (first) {
last -> next = first;
}
// Merging remaining elements of second list (if any)
if (second) {
last -> next = second;
}
}
Contributed by Nitin Ranganath