poly poly::add(poly p) { term *ptermarray=p.getArray(); int n=p.getTerms()+term_num; poly newpoly(n,0); list polyMerge(term_num,p.getTerms(),0,0); polyMerge.merge(termarray,ptermarray,poly_func,newpoly); if(newpoly.getCapacity()>newpoly.getTerms())//clean the space { term *newArray=newpoly.getArray(); term *temp=new term[newpoly.getTerms()]; int ptr=newpoly.getTerms()-1; for(;ptr>=0;ptr--) { temp[ptr]=newArray[ptr]; } newpoly.setArray(temp,newpoly.getTerms()); delete []temp; delete []newArray; newArray=NULL; } return newpoly; }