In the Leetcode Merge k Sorted Lists problem solution in C programming Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.
Merge all the linked-lists into one sorted linked-list and return it.
Example 1:
Input: lists = [[1,4,5],[1,3,4],[2,6]]
Output: [1,1,2,3,4,4,5,6]
Explanation: The linked lists are:
[
1->4->5,
1->3->4,
2->6
]
merging them into one sorted list:
1->1->2->3->4->4->5->6
Constraints:
- k == lists.length
- 0 <= k <= 104
- 0 <= lists[i].length <= 500
- -104 <= lists[i][j] <= 104
- lists[i] is sorted in ascending order.
- The sum of lists[i].length will not exceed 104.
Leetcode Merge k Sorted Lists problem solution in C programming
void insert(struct ListNode**, int);
void swap(struct ListNode*, struct ListNode*);
void sort(struct ListNode*);
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize){
if(!listsSize){
return NULL;
}
int i;
struct ListNode* head = lists[0];
for(i = 1; i < listsSize; i++){
while(lists[i] != NULL){
insert(&head, lists[i]->val);
lists[i] = lists[i]->next;
}
}
sort(head);
return head;
}
void insert(struct ListNode** head_ref, int val){
struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = val;
newNode->next = *head_ref;
*head_ref = newNode;
return;
}
void swap(struct ListNode* a, struct ListNode* b){
int temp;
temp = a->val;
a->val = b->val;
b->val = temp;
}
void sort(struct ListNode* head){
if(!head){
return;
}
int swapped;
struct ListNode* temp;
struct ListNode* last = NULL;
do{
temp = head;
swapped = 0;
while(temp->next != last){
if(temp->val > temp->next->val){
swap(temp, temp->next);
}
swapped = 1;
temp = temp->next;
}
last = temp;
}
while(swapped);
}
Also read,
- Leetcode Merge k Sorted Lists problem solution in C++
- Leetcode Merge k Sorted Lists problem solution in Java
- Leetcode Merge k Sorted Lists problem solution in Python
- Leetcode Merge k Sorted Lists problem solution in C#