数据结构:超长正整数相加相乘,该怎么解决

数据结构:超长正整数相加相乘
关于超长正整数相加进一的思路以及超长正整数相乘思路希望大神们指导
最好能有代码
先谢谢了

------解决方案--------------------
C/C++ code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct LNode{
    int data;
    struct LNode *next;
}LNode, *LinkList;

LinkList ListInsert(LinkList L,int e)
{
    LinkList n;
    if(n=(LinkList)malloc(sizeof(LNode)))
    {
        n->data=e;
        n->next=L;
        return n; 
    }else return L;
}

void DisplyList(LinkList L)
{
    LinkList P=L;
    while(P)
    {
        printf("%d",P->data);
        P=P->next;
    }
    printf("\n");
}

void push(char *s,LinkList *L)
{
    char t[4];
    int m=0;
    while(*s!='\0')
    {
        if(strlen(s)%4==1)
        {
            t[m++]=*s;
            (*L)=ListInsert((*L),atoi(t));
            m=0;
        }else t[m++]=*s;
        s++;
    }
}


void add(LinkList L1,LinkList L2,LinkList *addL)
{
    int c=0;
    while(L1 && L2)
    {
        (*addL)=ListInsert((*addL),(L1->data+L2->data)%10000+c);
        c=(L1->data+L2->data)/10000;
        L1=L1->next;L2=L2->next;
    }
    if(L1) 
    {
        while(L1)
        {
            (*addL)=ListInsert((*addL),L1->data+c);
            c=0;
            L1=L1->next;
        }
    }
    if(L2) 
    {
        while(L2)
        {
            (*addL)=ListInsert((*addL),L2->data+c);
            c=0;
            L2=L2->next;
        }
    }
}

int main(int argc, char *argv[])
{    
    LinkList L1,L2,addL;
    L1=L2=addL=NULL; 
    if(argc!=3)
    {
        printf("1+1=3\n");
        return -1;
    }
    else
    {
        push(argv[1],&L1);
        push(argv[2],&L2);
    }
    add(L1,L2,&addL);
    printf("%s + %s = ",argv[1],argv[2]);
    DisplyList(addL);
    return 0;
}

------解决方案--------------------
咋变成两个帖子了
见另一个帖子