沈阳航空航天大学课程设计报告
p=p->next; len--; } p->next=oprr; oprr->prior=p; return OK; }
int compare(NodeList opr1,NodeList opr2) //比较opr1、opr2绝对值的大小 { NodeList p1,p2; p1=opr1->next; p2=opr2->next; if(cmplinklen(opr1,opr2)==1)//opr1比较长 return 1; else if(cmplinklen(opr1,opr2)==-1)//opr2比较长 return -1; else//长度相等的情况 { while(p1->data==p2->data && p1->next!=opr1) { p1=p1->next; p2=p2->next; } if(p1->data>p2->data) return 1; else if(p1->data
//-----------------------初始化链表函数----------------------- Status init(NodeList &oppr) { oppr=NULL; return OK; }
//===========================加法模块========================== Status jiafa(NodeList opr1,NodeList opr2,NodeList &oprr)//本算法实现A,B相加的操作 { int CF,buffer;
NodeList p1,p2,p3; oprr=(NodeList)malloc(LEN);
19
沈阳航空航天大学课程设计报告
oprr->next=oprr; oprr->prior=oprr; p1=opr1->prior; p2=opr2->prior; CF=buffer=0; while(p1!=opr1 && p2!=opr2) { buffer=p1->data+p2->data+CF; CF=buffer/10000;//若buffer的值大于9999则产生进位,赋给CF //将新建结点插入到头结点之后 p3=(NodeList)malloc(LEN); oprr->next->prior=p3; p3->prior=oprr; p3->next=oprr->next; oprr->next=p3; p3->data=buffer000;//应该将buffer的第四位赋给p3->data //.......................... p1=p1->prior; p2=p2->prior; } while(p1!=opr1) {//处理opr1链的剩余部分 buffer=p1->data+CF; CF=buffer/10000;//若buffer的值大于9999则产生进位,赋给CF //将新建结点插入到头结点之后 p3=(NodeList)malloc(LEN); oprr->next->prior=p3; p3->prior=oprr; p3->next=oprr->next; oprr->next=p3; p3->data=buffer000; //.......................... p1=p1->prior; } while(p2!=opr2) {//处理opr2链的剩余部分 buffer=p2->data+CF; CF=buffer/10000;//若buffer的值大于9999则产生进位,赋给CF //将新建结点插入到头结点之后 p3=(NodeList)malloc(LEN); oprr->next->prior=p3; p3->prior=oprr; p3->next=oprr->next;
20
沈阳航空航天大学课程设计报告
oprr->next=p3; p3->data=buffer000; p2=p2->prior; } if(CF) { p3=(NodeList)malloc(LEN); oprr->next->prior=p3; p3->prior=oprr; p3->next=oprr->next; oprr->next=p3; p3->data=CF; } return OK; }
//===================减法基本操作==========================
Status jianfa(NodeList opr1,NodeList opr2,NodeList &oprr)//本算法实现A,B相减的操作 {
//将A链分成与B链长相等的底位部分,和剩余的高位部分,并做相应处理。 int CF,buffer,flag; NodeList p1,p2,p3,qh,qt,qq; oprr=(NodeList)malloc(LEN); oprr->next=oprr; oprr->prior=oprr; p1=opr1->prior; p2=opr2->prior; CF=buffer=flag=0; while(p2!=opr2)//opr2链的长度小于等于opr1链的 { if(p1->data<(p2->data+CF)) { buffer=10000+p1->data-(p2->data+CF); CF=1; } else { buffer=p1->data-(p2->data+CF); CF=0; } p3=(NodeList)malloc(LEN); oprr->next->prior=p3; p3->prior=oprr; p3->next=oprr->next;
21
沈阳航空航天大学课程设计报告
oprr->next=p3; p3->data=buffer; p1=p1->prior; p2=p2->prior; } while(p1!=opr1) {//处理opr1链剩下的部分 if(p1->data
22