#include <stdio.h>
#include <malloc.h>
typedef struct Node
{
int data;
struct Node* pNext;
}Node;
Node* GetNode(int data)
{
Node
*tempNode
= (Node
*) malloc (sizeof(Node
)); tempNode->data = data;
tempNode->pNext = NULL;
return tempNode;
}
void AddNode(Node**rootNode, int data)
{
if (!*rootNode)
*rootNode = GetNode(data);
else
{
AddNode(&((*rootNode)->pNext), data);
}
}
void TraverseList(Node *pRoot)
{
while (pRoot)
{
pRoot = pRoot->pNext;
}
}
Node* MergeSortedLinkedLists(Node *pFirst, Node *pSecond)
{
Node tempNode;
Node *pCrawler = &tempNode;
while (pFirst && pSecond)
{
if (pFirst->data < pSecond->data)
{
pCrawler->pNext = pFirst;
pFirst = pFirst->pNext;
}
else
{
pCrawler->pNext = pSecond;
pSecond = pSecond->pNext;
}
pCrawler = pCrawler->pNext;
}
if (pFirst)
pCrawler->pNext = pFirst;
if (pSecond)
pCrawler->pNext = pSecond;
return tempNode.pNext;
}
int main(void) {
Node *pRootFirst = NULL;
AddNode(&pRootFirst, 1);
AddNode(&pRootFirst, 3);
AddNode(&pRootFirst, 5);
TraverseList(pRootFirst);
Node *pRootSecond = NULL;
AddNode(&pRootSecond, 2);
AddNode(&pRootSecond, 4);
AddNode(&pRootSecond, 6);
TraverseList(pRootSecond);
Node *pRootMerge = MergeSortedLinkedLists(pRootFirst, pRootSecond);
printf("Done with merging. Printing Data...\n"); TraverseList(pRootMerge);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCnR5cGVkZWYgc3RydWN0IE5vZGUKewoJaW50IGRhdGE7CglzdHJ1Y3QgTm9kZSogcE5leHQ7Cn1Ob2RlOwoKTm9kZSogR2V0Tm9kZShpbnQgZGF0YSkKewoJTm9kZSAqdGVtcE5vZGUgPSAoTm9kZSopIG1hbGxvYyAoc2l6ZW9mKE5vZGUpKTsKCXRlbXBOb2RlLT5kYXRhID0gZGF0YTsKCXRlbXBOb2RlLT5wTmV4dCA9IE5VTEw7CgkKCXJldHVybiB0ZW1wTm9kZTsKfQoKdm9pZCBBZGROb2RlKE5vZGUqKnJvb3ROb2RlLCBpbnQgZGF0YSkKewoJaWYgKCEqcm9vdE5vZGUpCgkJKnJvb3ROb2RlID0gR2V0Tm9kZShkYXRhKTsKCWVsc2UKCXsKCQlBZGROb2RlKCYoKCpyb290Tm9kZSktPnBOZXh0KSwgZGF0YSk7Cgl9Cn0KCnZvaWQgVHJhdmVyc2VMaXN0KE5vZGUgKnBSb290KQp7Cgl3aGlsZSAocFJvb3QpCgl7CgkJcHJpbnRmKCIlZCAiLCBwUm9vdC0+ZGF0YSk7CgkJcFJvb3QgPSBwUm9vdC0+cE5leHQ7IAoJfQoJCglwcmludGYgKCJcbiIpOwp9CgpOb2RlKiBNZXJnZVNvcnRlZExpbmtlZExpc3RzKE5vZGUgKnBGaXJzdCwgTm9kZSAqcFNlY29uZCkKewoJTm9kZSB0ZW1wTm9kZTsKCU5vZGUgKnBDcmF3bGVyID0gJnRlbXBOb2RlOwoKCXdoaWxlIChwRmlyc3QgJiYgcFNlY29uZCkKCXsKCQlpZiAocEZpcnN0LT5kYXRhIDwgcFNlY29uZC0+ZGF0YSkKCQl7CgkJCXBDcmF3bGVyLT5wTmV4dCA9IHBGaXJzdDsKCQkJcEZpcnN0ID0gcEZpcnN0LT5wTmV4dDsKCQl9CgkJZWxzZQoJCXsKCQkJcENyYXdsZXItPnBOZXh0ID0gcFNlY29uZDsKCQkJcFNlY29uZCA9IHBTZWNvbmQtPnBOZXh0OwoJCX0KCQlwQ3Jhd2xlciA9IHBDcmF3bGVyLT5wTmV4dDsKCX0KCglpZiAocEZpcnN0KQoJCXBDcmF3bGVyLT5wTmV4dCA9IHBGaXJzdDsKCQoJaWYgKHBTZWNvbmQpCgkJcENyYXdsZXItPnBOZXh0ID0gcFNlY29uZDsKCglyZXR1cm4gdGVtcE5vZGUucE5leHQ7Cn0KCmludCBtYWluKHZvaWQpIHsKCU5vZGUgKnBSb290Rmlyc3QgPSBOVUxMOwoJQWRkTm9kZSgmcFJvb3RGaXJzdCwgMSk7CglBZGROb2RlKCZwUm9vdEZpcnN0LCAzKTsKCUFkZE5vZGUoJnBSb290Rmlyc3QsIDUpOwoJVHJhdmVyc2VMaXN0KHBSb290Rmlyc3QpOwoJCglOb2RlICpwUm9vdFNlY29uZCA9IE5VTEw7CglBZGROb2RlKCZwUm9vdFNlY29uZCwgMik7CglBZGROb2RlKCZwUm9vdFNlY29uZCwgNCk7CglBZGROb2RlKCZwUm9vdFNlY29uZCwgNik7CglUcmF2ZXJzZUxpc3QocFJvb3RTZWNvbmQpOwoJCglOb2RlICpwUm9vdE1lcmdlID0gTWVyZ2VTb3J0ZWRMaW5rZWRMaXN0cyhwUm9vdEZpcnN0LCBwUm9vdFNlY29uZCk7CgkKCXByaW50ZigiRG9uZSB3aXRoIG1lcmdpbmcuIFByaW50aW5nIERhdGEuLi5cbiIpOwoJVHJhdmVyc2VMaXN0KHBSb290TWVyZ2UpOwoJCglyZXR1cm4gMDsKfQo=