题目两个随机链表求和:
链表存储的是非负整数,每个节点只存储一个数字,如 2->5->7 + 8->9->6 = 0->5->4->1
这里只给出核心函数代码块,完整的例子请参考
https://github.com/Sangewang/LinkListPrac/blob/master/CreateAndShowLinklist.c
LinkNode * AddSumLinkList(LinkNode *pHead1,LinkNode *pHead2)
{
LinkNode *p1 = pHead1;
LinkNode *p2 = pHead2;
LinkNode *pSumHead = (LinkNode*)malloc(sizeof(LinkNode));
pSumHead->m_Value = -1;
LinkNode *pFind = pSumHead;
int flag = 0;
for(p1=pHead1,p2=pHead2;p1!=NULL||p2!=NULL;p1=(p1==NULL?NULL:p1->p_Next),p2=(p2==NULL?NULL:p2->p_Next),pFind=pFind->p_Next)
{
LinkNode *pTemp = (LinkNode *)malloc(sizeof(LinkNode));
const int value1 = (p1==NULL?0:p1->m_Value);
const int value2 = (p2==NULL?0:p2->m_Value);
printf("value1 = %d , value2 = %d\n",value1,value2);
pTemp->m_Value = (value1 + value2 + flag)%10;
flag = (value1 + value2 + flag)/10;
pFind->p_Next = pTemp;
}
if(flag>0)
{
LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode));
p->m_Value = flag;
pFind->p_Next = p;
}
return pSumHead->p_Next;
}