大整数计算实验报告(3)

2019-03-03 19:47

p->data=p->data+1000; } p=p->prior; q=q->prior; } output(head1,p1); }

if(ndata=q->data-p->data; if(q->data<0) { q->prior->data=q->prior->data-1; q->data=q->data+1000; } p=p->prior; q=q->prior; } output(head2,p2); }

return OK; }

Status max_mul(LinkList &head1,LinkList &head2,LinkList &p1,LinkList &p2,LinkList &L) /*链 表 乘 法*/

{

LinkList s; LinkList b,d; LinkList p,q;

LinkList h1,h2,tail1,tail2; int n=0,m=0; int i;

LinkList r,tail,tailr;

ElemType mo,di,re,edi; int c,flag ;

p=head1; q=head2;

while(p!=NULL) /*遍历链表 然后记录链表长度*/ {

n=n+1; p=p->next; }

while(q!=NULL) /*遍历链表 然后记录链表长度*/ { m=m+1; q=q->next; }

h1=(LinkList)malloc(sizeof(LNode)); /*要装拆分第一个双向链表后的链表*/

tail1=h1;

h1->prior=NULL; i=0;

while(i<(3*n)) { p=(LinkList)malloc(sizeof(LNode)); p=tail1->next; tail1=p->prior; tail1=p; i=i+1; }

tail1->next=NULL;

h2=(LinkList)malloc(sizeof(LNode)); /*要装拆分第二个双向链表后的链表*/

tail2=h2;

h2->prior=NULL; i=0;

while(i<(3*m)) { q=(LinkList)malloc(sizeof(LNode)); q=tail2->next; tail2=q->prior; tail2=q; i=i+1; }

tail2->next=NULL;

s=head1; b=h1->next; while(s!=NULL)

{ b->data=s->data/100; /*拆分head1链表 然后放进刚刚建立好的h1双向链表中*/

b=b->next; b->data=s->data/10; b=b->next; b->data=s->data; b=b->next; s=s->next; }

s=head2; d=h2->next; while(s!=NULL) { d->data=s->data/100; /*拆分head2链表 然后放进刚刚建立好的h2双向链表中*/

d=d->next; d->data=s->data/10; d=d->next; d->data=s->data; d=d->next; s=s->next; }

/*要做 p q 两个链表相乘 要考虑进位 还有将所得结果放到哪个链表中等问题*/

L = (LinkList)malloc(sizeof(LNode)) ; /*用L来装乘完后的数据*/

if(!L)

exit(OVERFLOW); L->next = NULL; L->prior = NULL;

di = 0; edi = 0; tail = p;

while(p != NULL){ re = p->data * q->data; mo = re % 10;

if(L->prior == NULL) {

r = L;

r->data = mo + di; if (r->data >= 10){ edi = r->data / 10;

r->data = r->data % 10; } else { edi = 0; }

L->prior = L; } else {

r = (LinkList)malloc(sizeof(LNode)); r->data = mo + di; if (r->data >= 10){ edi = r->data / 10;

r->data = r->data % 10; } else { edi = 0; }

L->prior = r; r->next = L; L = r; }

di = edi + re / 10; edi = 0;

p = p->prior; }

while(di > 0){

r = (LinkList)malloc(sizeof(LNode)); r->data = di % 10; di = di / 10; L->prior = r; r->next = L; L = r;

L->prior = NULL; }

L->prior = NULL;

while (r->next != NULL) r = r->next; tailr = r; c=1;

q = q->prior;

while (q != NULL){ p = tail; r = tailr; flag = 0; di = 0; edi = 0;

for(i=1;i<=c;i++){ if(r->prior != NULL)r = r->prior; else { r = (LinkList)malloc(sizeof(LNode)); r->data = 0; L->prior = r; r->next = L; L = r;

L->prior = NULL; flag = 1; } }

while(p != NULL){

re = p->data * q->data; mo = re % 10;

if(flag == 0) r->data = r->data+ mo + di; else r->data = mo + di; if (r->data >= 10){ edi = r->data / 10;

r->data = r->data % 10; }

di = edi + re / 10; edi = 0; p = p->prior;

if(r->prior != NULL)r = r->prior; else {

r = (LinkList)malloc(sizeof(LNode)); r->data = 0; L->prior = r; r->next = L; L = r; L->prior = NULL; flag = 1; } }

if(di > 0){


大整数计算实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版七年级语文下册:第9课《土地的誓言》同步练习(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: