#include <stdio.h>
struct node
{
int data;
struct node* next;
};
struct node *head=NULL;
void push(struct node** head_ref, int new_data)
{
// you should point to NULL
if((*head_ref==NULL))
{
(*head_ref
)=malloc(sizeof(struct node
)); (*head_ref)->next=NULL;
(*head_ref)->data=new_data; // you are not inserting data
}
else
{
struct node
* new_node
=malloc(sizeof(struct node
)); new_node->next = (*head_ref);
new_node->data=new_data;
(*head_ref) = new_node;
}
}
void printList(struct node *node)
{
while(node!=NULL)
{
node = node->next;
}
}
void move(struct node* temp1,struct node** temp3){
struct node
* node1
= malloc(sizeof(struct node
)); node1->data=temp1->data;
if(*temp3==NULL){
*temp3=node1;
node1->next=NULL;
head=(*temp3);
return;
}
else{
(*temp3)-> next=node1;
(*temp3)=(*temp3)->next;
(*temp3)->next=NULL; // final node should point NULL
}
}
void merge(struct node* a,struct node* b,struct node** c){
if(a==NULL){
*c=b;
return;
}
else if(b==NULL){
*c=a;
return;
}
else{
struct node* temp1;
struct node* temp2;
struct node* temp3;
temp1=a;
temp2=b; // main bug in your code is merging is done with temp3 not with (*c) so (*c) always points NULL and it is not printing any data
while(temp1!=NULL && temp2!=NULL)
{
if(temp1->data<temp2->data){
move(temp1,c); // so manpiluating whole program with 'c'
temp1=temp1->next;
}
else{
move(temp2,c);
temp2=temp2->next;
}
}
if(temp1==NULL){
(*c)->next=temp2;
}
else
{
(*c)->next=temp1;
}
}
}
int main()
{
struct node* a = NULL;
struct node* b = NULL;
struct node* c = NULL;
push(&a, 15);
push(&a, 10);
push(&a, 5);
push(&b, 20);
push(&b, 3);
push(&b, 2);
merge(a, b,&c);
printList(head); // head is nothing but a global pointer which points to initial node of 'c'
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3Qgbm9kZQp7CiAgICAgICAgaW50IGRhdGE7CiAgICAgICAgc3RydWN0IG5vZGUqIG5leHQ7Cn07CnN0cnVjdCBub2RlICpoZWFkPU5VTEw7CnZvaWQgcHVzaChzdHJ1Y3Qgbm9kZSoqIGhlYWRfcmVmLCBpbnQgbmV3X2RhdGEpCnsKICAgICAgICAvLyB5b3Ugc2hvdWxkIHBvaW50IHRvIE5VTEwKICAgICAgICBpZigoKmhlYWRfcmVmPT1OVUxMKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICAoKmhlYWRfcmVmKT1tYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICAgICAgICAgICAgICAoKmhlYWRfcmVmKS0+bmV4dD1OVUxMOwogICAgICAgICAgICAgICAgKCpoZWFkX3JlZiktPmRhdGE9bmV3X2RhdGE7ICAgICAvLyB5b3UgYXJlIG5vdCBpbnNlcnRpbmcgZGF0YQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IG5vZGUqIG5ld19ub2RlPW1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKICAgICAgICAgICAgICAgIG5ld19ub2RlLT5uZXh0ID0gKCpoZWFkX3JlZik7CiAgICAgICAgICAgICAgICBuZXdfbm9kZS0+ZGF0YT1uZXdfZGF0YTsKICAgICAgICAgICAgICAgICgqaGVhZF9yZWYpID0gbmV3X25vZGU7CiAgICAgICAgfQp9CnZvaWQgcHJpbnRMaXN0KHN0cnVjdCBub2RlICpub2RlKQp7CiAgICAgICAgd2hpbGUobm9kZSE9TlVMTCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVkICIsIG5vZGUtPmRhdGEpOwogICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CiAgICAgICAgfQp9CnZvaWQgbW92ZShzdHJ1Y3Qgbm9kZSogdGVtcDEsc3RydWN0IG5vZGUqKiB0ZW1wMyl7CiAgICAgICAgc3RydWN0IG5vZGUqIG5vZGUxPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICAgICAgbm9kZTEtPmRhdGE9dGVtcDEtPmRhdGE7CiAgICAgICAgaWYoKnRlbXAzPT1OVUxMKXsKICAgICAgICAgICAgICAgICp0ZW1wMz1ub2RlMTsKICAgICAgICAgICAgICAgIG5vZGUxLT5uZXh0PU5VTEw7CiAgICAgICAgICAgICAgICBoZWFkPSgqdGVtcDMpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgKCp0ZW1wMyktPiBuZXh0PW5vZGUxOwogICAgICAgICAgICAgICAgKCp0ZW1wMyk9KCp0ZW1wMyktPm5leHQ7CiAgICAgICAgICAgICAgICAoKnRlbXAzKS0+bmV4dD1OVUxMOyAvLyBmaW5hbCBub2RlIHNob3VsZCBwb2ludCBOVUxMCiAgICAgICAgfQp9Cgp2b2lkIG1lcmdlKHN0cnVjdCBub2RlKiBhLHN0cnVjdCBub2RlKiBiLHN0cnVjdCBub2RlKiogYyl7CiAgICAgICAgaWYoYT09TlVMTCl7CiAgICAgICAgICAgICAgICAqYz1iOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGI9PU5VTEwpewogICAgICAgICAgICAgICAgKmM9YTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIHN0cnVjdCBub2RlKiB0ZW1wMTsKICAgICAgICAgICAgICAgIHN0cnVjdCBub2RlKiB0ZW1wMjsKICAgICAgICAgICAgICAgIHN0cnVjdCBub2RlKiB0ZW1wMzsKICAgICAgICAgICAgICAgIHRlbXAxPWE7CiAgICAgICAgICAgICAgICB0ZW1wMj1iOyAvLyBtYWluIGJ1ZyBpbiB5b3VyIGNvZGUgaXMgbWVyZ2luZyBpcyBkb25lIHdpdGggdGVtcDMgbm90IHdpdGggKCpjKSBzbyAoKmMpIGFsd2F5cyBwb2ludHMgTlVMTCBhbmQgaXQgaXMgbm90IHByaW50aW5nIGFueSBkYXRhCiAgICAgICAgICAgICAgICB3aGlsZSh0ZW1wMSE9TlVMTCAmJiB0ZW1wMiE9TlVMTCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodGVtcDEtPmRhdGE8dGVtcDItPmRhdGEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUodGVtcDEsYyk7IC8vIHNvIG1hbnBpbHVhdGluZyB3aG9sZSBwcm9ncmFtIHdpdGggJ2MnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcDE9dGVtcDEtPm5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKHRlbXAyLGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAyPXRlbXAyLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZih0ZW1wMT09TlVMTCl7CiAgICAgICAgICAgICAgICAgICAgICAgICgqYyktPm5leHQ9dGVtcDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICgqYyktPm5leHQ9dGVtcDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9CmludCBtYWluKCkKewoKICAgICAgICBzdHJ1Y3Qgbm9kZSogYSA9IE5VTEw7CiAgICAgICAgc3RydWN0IG5vZGUqIGIgPSBOVUxMOwogICAgICAgIHN0cnVjdCBub2RlKiBjID0gTlVMTDsKICAgICAgICBwdXNoKCZhLCAxNSk7CiAgICAgICAgcHVzaCgmYSwgMTApOwogICAgICAgIHB1c2goJmEsIDUpOwogICAgICAgIHB1c2goJmIsIDIwKTsKICAgICAgICBwdXNoKCZiLCAzKTsKICAgICAgICBwdXNoKCZiLCAyKTsKICAgICAgICBtZXJnZShhLCBiLCZjKTsKICAgICAgICBwcmludExpc3QoaGVhZCk7IC8vIGhlYWQgaXMgbm90aGluZyBidXQgYSBnbG9iYWwgcG9pbnRlciB3aGljaCBwb2ludHMgdG8gaW5pdGlhbCBub2RlIG9mICdjJwogICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICByZXR1cm4gMDsKfQo=