实验一无限位长整数运算Word格式.docx
《实验一无限位长整数运算Word格式.docx》由会员分享,可在线阅读,更多相关《实验一无限位长整数运算Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
head)//初始化链表的函数
{
if((head=newDLNode)==NULL)
exit
(1);
head->
prior=NULL;
next=NULL;
}
voidInsertNode(DLNode*&
head,DataTypea)//插入元素的到指定的位置加法中需要在头部插入
DLNode*newNode;
InitNode(newNode);
newNode->
data=a;
next=head;
head=newNode;
voidPrintNode(DLNode*head,chara)//打印输出链表
DLNode*p=head;
while(p->
data=='
0'
)
{
p=p->
next;
if(p==NULL)
{
cout<
<
'
endl;
return;
}
}
if(a=='
-'
cout<
;
while(p!
=NULL)
p->
data;
cout<
voidDestoryNode(DLNode*&
head)//销毁链表
DLNode*p,*p1;
p=head;
p1=p;
deletep1;
deletep;
head=NULL;
intCalLongNode(DLNode*head)//计算链表的长度
DLNode*p;
intn=0;
n++;
returnn;
charCheckNode(DLNode*head)//检查链表的运算符
if(p->
+'
||p->
data!
='
&
p->
returnp->
intAtoiChar(chara)//将字符转化为数字便于计算
return(a-'
);
voidToLastNode(DLNode*&
head)//寻到最后一个节点
while(head->
next!
head=head->
voidAddNode(DLNode*h1,DLNode*h2)//计算加法传递参数勿用head传递
intl1,l2,a;
//用来记录链表的长度
intcarry=0;
//存贮进位
charcal;
//存贮最终结果的符号
intm,n;
boolf1=0,f2=0;
DLNode*h3,*h4;
InitNode(p);
InitNode(h3);
InitNode(h4);
h3=h1;
h4=h2;
l1=CalLongNode(h1);
l2=CalLongNode(h2);
if(h3->
f1=1;
l1=l1-1;
h3=h3->
h1=h1->
if(h4->
f2=1;
l2=l2-1;
h2=h2->
h4=h4->
if(f1==0)
cal='
elsecal='
if(l1<
l2)
p=h1;
h1=h2;
h2=p;
h3=h1;
h4=h2;
a=l1;
l1=l2;
l2=a;
ToLastNode(h3);
ToLastNode(h4);
for(inti=0;
i<
l2;
i++)
m=h3->
data-'
n=h4->
m=m+n+carry;
carry=0;
if(m>
9)
carry=1;
m=m-10;
h3->
data=m+'
m=0;
n=0;
prior;
l1-l2;
//cout<
m<
#'
m=m+carry;
*'
m;
}
if(carry==1)
charm;
m='
1'
InsertNode(h1,m);
PrintNode(h1,cal);
voidCalNode(DLNode*h1,DLNode*h2,charoper)//计算减法
intl1,l2,a;
intborrow=0;
//存贮借位的值
//存贮最终结果的正负
intm=0,n=0;
boolf1=0,f2=0;
if(h1->
if(h2->
l2=l2-1;
if(l1>
if(f1==0)
cal='
else
if((oper=='
&
f2==0)||(oper=='
f2==1))
if(l1==l2)
DLNode*h5,*h6;
InitNode(h5);
InitNode(h6);
h5=h1;
h6=h2;
booljudge=0;
for(inti=0;
l1;
if(h5->
data>
h6->
data)
{
cal='
judge=1;
break;
}
data<
p=h1;
h2=h1;
h1=p;
else
h5=h5->
h6=h6->
if(judge==0)
"
0"
exit(0);
m=m-n-borrow;
borrow=0;
if(m<
0)
borrow=1;
m=m+10;
m=m-borrow;