oid AddPolyn(polynomial &Pa, polynomial &Pb) { //多项式加法:Pa = Pa+Pb,利用两个多项式的结点构成“和多项式” Position ha, hb, qa, qb; term a, b; ha = GetHead(Pa); hb = GetHead(Pb);//ha和hb分别指向Pa和Pb的头结点 qa = NextPos(Pa,ha); qb = NextPos(Pb,hb);//qa和qb分别指向Pa和Pb中的当前结点 //此时qa和qb都是指向多项式第一项 while (qa && qb)//qa和qb非空 { a = GetCurElem(qa); b = GetCurElem(qb); // a和b为两表中当前比较元素 int sum; switch (cmp(a, b))//比较两者的指数值 //*cmp(a, b) { case -1://多项式中PA中的结点的指数小 ha = qa; qa = NextPos(Pa,ha); break; case 0://两者指数值相等 sum = a.coef + b.coef; if (sum != 0){ //修改Pa指向的该结点的系数值 qa->data.coef = sum; ha=qa; } //SetCurElem(qa,sum); else{ //删除多项式PA中当前结点 ha->next=qa->next; Pa.len--; FreeNode(qa); } //使用DelFirst后表长减一 hb->next=qb->next; Pb.len-=1; FreeNode(qb); qb = NextPos(Pb,hb); qa = NextPos(Pa,ha); break; case 1://多项式PB中的当前结点指数值小 hb->next=qb->next; Pb.len-=1; InsFirst(ha, qb); Pa.len+=1; //使用InsFirst后表长加一 qb = NextPos(Pb,hb); qa = NextPos(Pa,ha); break; }//switch }//while if (!ListEmpty(Pb)) {Append(Pa, qb);// Pa.len+=Pb.len; } //连接Pb中剩余结点 FreeNode(hb);
编写一个输出当前链表所有内容的函数,然后在程序处理的每一步,调用该函数,辅助你理解和调试。