两个随机长度的链表相加

来源:互联网 发布:自制海报软件 编辑:程序博客网 时间:2024/06/06 00:11

题目两个随机链表求和:

链表存储的是非负整数,每个节点只存储一个数字,如 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;}




原创粉丝点击