c语言 40位长整数加法,长整数加法(C语言)

绝对货真价实,绝对是C的,绝对功能强大,绝对零错误。

#include

#include

typedef int ElemType;

typedef struct DulNode{

ElemType data;

struct DulNode *prior;

struct DulNode *next;

}DulNode,*DulinkList;

void creat(DulinkList &head1,DulinkList &head2)

{char b,c; int a;

DulinkList p1,p2;

head1=p1=(DulinkList)malloc(sizeof(DulNode));

printf("请您输入第一个长整数\n");

do{

a=getchar();

if(a=='-'){head1->data=0;a=getchar()-48;}

else a=a-48;

b=getchar();

while(b!=','&&b!=';')

{

a=b-48+a*10;

b=getchar();

}

p2=(DulinkList)malloc(sizeof(DulNode));

p2->data=a;

p2->next=head1;

p2->prior=p1;

p1->next=p2;

head1->prior=p2;

p1=p2;

}while(b!=';');

c=getchar();

head2=p1=(DulinkList)malloc(sizeof(DulNode));

printf("请您输入第二个长整数\n");

do{

a=getchar();

if(a=='-'){head2->data=0;a=getchar()-48;}

else a=a-48;

b=getchar();

while(b!=','&&b!=';')

{

a=b-48+a*10;

b=getchar();

}

p2=(DulinkList)malloc(sizeof(DulNode));

p2->data=a;

p2->next=head2;

p2->prior=p1;

p1->next=p2;

head2->prior=p2;

p1=p2;

}while(b!=';');

c=getchar();

}

void add(DulinkList head1,DulinkList head2,DulinkList &head)

{int a,flag=0;DulinkList p1,p2,p3,p4;

p3=head1,p4=head2;

p1=head=(DulinkList)malloc(sizeof(DulNode));

p3=p3->prior;p4=p4->prior;

do

{a=p3->data+p4->data;

p2=(DulinkList)malloc(sizeof(DulNode));

if(a>=10000)

{a=a-10000;

if(flag==1){p2->data=a+1;flag=0;}

else p2->data=a;

flag=1;

}

else

{if(flag==1){p2->data=a+1;flag=0;}

else p2->data=a;

}

p2->next=head;

p2->prior=p1;

p1->next=p2;

head->prior=p2;

p1=p2;

p3=p3->prior;p4=p4->prior;

}while(p3!=head1&&p4!=head2);

if(p3!=head1)

{do

{

if(flag==1){a=p3->data+1;flag=0;}

else a=p3->data;

if(a>=10000){a=a-10000;flag=1;}

p2=(DulinkList)malloc(sizeof(DulNode));

p2->data=a;

p2->next=head;

p2->prior=p1;

p1->next=p2;

head->prior=p2;

p1=p2;

p3=p3->prior;}while(p3!=head1);

}

if(p4!=head2)

{do{

if(flag==1){a=p4->data+1;flag=0;}

else a=p4->data;

if(a>=10000){a=a-10000;flag=1;}

p2=(DulinkList)malloc(sizeof(DulNode));

p2->data=a;

p2->next=head;

p2->prior=p1;

p1->next=p2;

head->prior=p2;

p1=p2;

p4=p4->prior;}while(p4!=head2);

}

if(flag==1)

{

p2=(DulinkList)malloc(sizeof(DulNode));

p2->data=1;

p2->next=head;

p2->prior=p1;

p1->next=p2;

head->prior=p2;

}

if(head1->data==0&&head2->data==0)head->data=0;

}

void print(DulinkList head)

{int a;

DulinkList p=head->prior;

a=p->data;

if(head->data==0)printf("-");

while(a==0)

{p=p->prior;

a=p->data;}

printf("%d",a);

p=p->prior;

while(p!=head)

{printf(",");

a=p->data;

if(a<10)printf("000%d",a);

else if(a<100&&a>=10)printf("00%d",a);

else if(a<1000&&a>=100)printf("0%d",a);

else printf("%d",a);

p=p->prior;

}

}

int length(DulinkList head)

{int i;

DulinkList p=head->next;

for(i=0;p!=head;p=p->next)

{i++;}

return i;

}

int compare(DulinkList head1,DulinkList head2)

{int L1,L2,a,b;

DulinkList p1=head1->next,p2=head2->next;

L1=length(head

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值