Leetcode Merge k Sorted Lists problem solution in C programming

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,

By Neha Singhal

Hi, my name is Neha singhal a software engineer and coder by profession. I like to solve coding problems that give me the power to write posts for this site.

Leave a Reply

Your email address will not be published. Required fields are marked *