二元多项式加减运算问题-数据结构与算法课程设计报告(3)

2019-01-27 15:52

{

LinkList *p=L->next,*q,*r; if(p!=NULL) {

r=p->next; p->next=NULL; p=r;

while(p!=NULL) {

r=p->next; q=L;

while(q->next!=NULL&&((q->next->xexp>p->xexp)||(q->next->xexp==p->xexp&&q->next->yexp>p->yexp))) q=q->next; p->next=q->next; q->next=p; p=r; } } }

//两个多项式相加

void ListAdd(LinkList *&L1,LinkList *&L2,LinkList *&L3) {

int coef[MAX1+MAX2],xexp[MAX1+MAX2],yexp[MAX1+MAX2],i=0; LinkList *p=L1->next,*q=L2->next; while(p!=NULL&&q!=NULL) {

if(p->xexpxexp) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

else if(p->xexp>q->xexp) {

coef[i]=q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next;

}

else if(p->xexp==q->xexp&&p->yexpyexp) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

else if(p->xexp==q->xexp&&p->yexp>q->yexp) {

coef[i]=q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next; }

else if(p->xexp==q->xexp&&p->yexp==q->yexp) {

coef[i]=p->coef+q->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; q=q->next; } }

while(p!=NULL&&q==NULL) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

while(q!=NULL&&p==NULL) {

coef[i]=q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next; }

CreateList(L3,coef,xexp,yexp,i); sort(L3); }

//两个多项式相减

void ListSubtract(LinkList *&L1,LinkList *&L2,LinkList *&L3) {

int coef[MAX1+MAX2],xexp[MAX1+MAX2],yexp[MAX1+MAX2],i=0; LinkList *p=L1->next,*q=L2->next; while(p!=NULL&&q!=NULL) {

if(p->xexpxexp) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

else if(p->xexp>q->xexp) {

coef[i]=-q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next; }

else if(p->xexp==q->xexp&&p->yexpyexp) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

else if(p->xexp==q->xexp&&p->yexp>q->yexp) {

coef[i]=-q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next; }

else if(p->xexp==q->xexp&&p->yexp==q->yexp) {

coef[i]=p->coef-q->coef;

xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; q=q->next; } }

while(p!=NULL&&q==NULL) {

coef[i]=p->coef; xexp[i]=p->xexp; yexp[i]=p->yexp; i++;

p=p->next; }

while(q!=NULL&&p==NULL) {

coef[i]=-q->coef; xexp[i]=q->xexp; yexp[i]=q->yexp; i++;

q=q->next; }

CreateList(L3,coef,xexp,yexp,i); sort(L3); }

//显示多项式

void DisplayList(LinkList *&L) {

LinkList *p=L->next;

printf(\

p=p->next;

while(p!=NULL) { {

if(p->coef>0)

printf(\else

printf(\}

p=p->next;

} }

//菜单

int menu_select() {

int choose;

printf(\printf(\、两个多项式的和\\n\printf(\、两个多项式的差\\n\printf(\、退出\\n\

printf(\请选择(1或2或0)\\n\

printf(\for( ; ; ) {

scanf(\ if(choose<0||choose>2)

printf(\输入有误,重新选择\\n\ else

break; }

return choose; }

//主函数 void main() {

int coef[MAX1],xexp[MAX1],yexp[MAX1],i=0; LinkList *L1,*L2,*LSum;

printf(\输入第一个多项式的所有系数(%d个):\\n\输入第一个多项式的系数 for(i=0;i

printf(\输入第一个多项式所有的x幂(%d个):\\n\输入第一个多项式的x幂 for(i=0;i

printf(\输入第一个多项式所有的y幂(%d个):\\n\输入第一个多项式的y幂 for(i=0;i

CreateList(L1,coef,xexp,yexp,MAX1);

printf(\输入第二个多项式的所有系数(%d个):\\n\输入第二个多项式的系数 for(i=0;i

printf(\输入第二个多项式所有的x幂(%d个):\\n\输入第二个多项式的x幂 for(i=0;i

printf(\输入第二个多项式所有的y幂(%d个):\\n\输入第二个多项式的y幂 for(i=0;i

scanf(\

CreateList(L2,coef,xexp,yexp,MAX2);

printf(\降幂显示第一个多项式:\\n\降幂显示第一个多项式 sort(L1);

DisplayList(L1);

printf(\降幂显示第二个多项式:\\n\降幂显示第二个多项式 sort(L2);

DisplayList(L2); printf(\

for(; ;) {

switch(menu_select()) {

case 1:

printf(\求两个多项式的和并显示:\\n\求两个多项式的和并显示 ListAdd(L1,L2,LSum); DisplayList(LSum); printf(\ break; case 2:

printf(\求两个多项式的差并显示:\\n\求两个多项式的差并显示 ListSubtract(L1,L2,LSum); DisplayList(LSum); printf(\

case 0:

default :printf(\退出!\\n\ break; } } }


二元多项式加减运算问题-数据结构与算法课程设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西方经济学家论通货膨胀与失业的关系

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: