void LinkList::addtwo()
//ڵΪٵΪʵֵļС //Ĭhead0ֵhead1 {
int s=0,m1=head0->data,m2=head1->data;
m1=(head0->pre->data/abs(head0->pre->data)); //head0ķ m2=(head1->pre->data/abs(head1->pre->data)); //head1ķ LinkNode *p=head0->pre->pre,*q=head1->pre->pre;
result->data=head0->pre->data; //Ľڵͷ while(q!=head1->pre)
//head0ֵhead1head0Ľڵڻhead1 {
currptr=new LinkNode;
currptr->data=(p->data)*m1+(q->data)*m2+s; // if((m1*m2)>0) //ͬ {
if(abs(currptr->data)-10000>=0) //Ӻ10000λ {
s=currptr->data/10000;
currptr->data=abs(currptr->data)000; }
else //abs(currptr->data)-10000<0λ { s=0;
currptr->data=abs(currptr->data); } }
else if(m1>0&&m2<0) //Ųͬڴ൱ʵ {
9 / 16
s=0;
if(currptr->data<0) //С0ǰһλ1 {
currptr->data+=10000; s=-1; } }
else if(m1<0&&m2>0) //Ųͬڴ൱ʵָ { s=0;
if(currptr->data>0) //0 {
currptr->data=10000-currptr->data; s=1; }
else currptr->data=abs(currptr->data); }
currptr->next=result; // currptr->pre=result->pre; result->pre->next=currptr; result->pre=currptr; result=currptr; p=p->pre; q=q->pre; }
//head0ڵhead1ʱ
10 / 16
while(p!=head0->pre) {
currptr=new LinkNode; currptr->data=p->data*m1+s; s=currptr->data/10000; if((m1*m2)>0) {
if(abs(currptr->data)-10000>=0) {
s=currptr->data/10000;
currptr->data=abs(currptr->data)000; }
else {s=0;currptr->data=abs(currptr->data);} }
else if(m1>0&&m2<0) { s=0;
if(currptr->data<0) {
currptr->data+=10000; s=-1; } }
else if(m1<0&&m2>0) { s=0;
if(currptr->data>0) {
currptr->data=10000-currptr->data; s=1;
11 / 16
}
else currptr->data=abs(currptr->data); }
currptr->data=abs(currptr->data)000; currptr->next=result; currptr->pre=result->pre; result->pre->next=currptr; result->pre=currptr; result=currptr; p=p->pre; }
if(s!=0) //Ӻλ {
currptr=new LinkNode; currptr->data=abs(s); currptr->next=result; currptr->pre=result->pre; result->pre->next=currptr; result->pre=currptr; result=currptr;
result->pre->data=m1*(abs(result->pre->data)+1); } }
void LinkList::Display() //ʾ {
LinkNode *p=result;
int FuHao=result->pre->data/abs(result->pre->data);//ķ while(p->data==0&&p!=result->pre->pre)
12 / 16