沈阳航空航天大学课程设计报告
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
相关推荐: