多项式除法 c语言 链表,顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现 ,顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现二、\x05主要内容设有一元多项式Am(x)和Bn...

#include

using namespace std;

struct term

{

\x09float xishu; //系数

\x09int zhishu; //指数

};

struct LNode

{

\x09term data; //term多项式值

\x09struct LNode *next;

};

typedef LNode* polynomail;

/*合并同类项*/

polynomail hebing(polynomail Head)

{

\x09polynomail r,q,p,Q;

\x09for(q=Head->next;q!=NULL;q=q->next)//合并同类项

\x09\x09\x09for(p=q->next,r=q;p!=NULL;)

\x09\x09\x09\x09if(q->data.zhishu==p->data.zhishu)

\x09\x09\x09\x09{

\x09\x09\x09\x09\x09q->data.xishu=q->data.xishu+p->data.xishu;

\x09\x09\x09\x09\x09r->next=p->next;

\x09\x09\x09\x09\x09Q=p;p=p->next;

\x09\x09\x09\x09\x09delete Q;

\x09\x09\x09\x09}

\x09\x09\x09\x09else

\x09\x09\x09\x09{

\x09\x09\x09\x09\x09r=r->next;

\x09\x09\x09\x09\x09p=p->next;

\x09\x09\x09\x09}

\x09return Head;

}

/*又小到大排列*/

void arrange1(polynomail pa)

{

\x09polynomail h=pa,p,q,r;

\x09for(p=pa;p->next!=NULL;p=p->next);r=p;

\x09while(h->next!=r)//大的沉底

\x09{

\x09\x09for(p=h;p->next!=r&&p!=r;p=p->next)

\x09\x09\x09if(p->next->data.zhishu>p->next->next->data.zhishu)

\x09\x09\x09{

\x09\x09\x09\x09q=p->next->next;

\x09\x09\x09\x09p->next->next=q->next;

\x09\x09\x09\x09q->next=p->next;

\x09\x09\x09\x09p->next=q;

\x09\x09\x09}

\x09\x09\x09r=p;//r指向参与比较的最后一个,不断向前移动

\x09}

}

/*由大到小排序*/

void arrange2(polynomail pa)

{

\x09polynomail h=pa,p,q,r;

\x09for(p=pa;p->next!=NULL;p=p->next); r=p;

\x09while(h->next!=r)//小的沉底

\x09{

\x09\x09for(p=h;p->next!=r&&p!=r;p=p->next)

\x09\x09\x09if(p->next->data.zhishunext->next->data.zhishu)

\x09\x09\x09{

\x09\x09\x09\x09q=p->next->next;

\x09\x09\x09\x09p->next->next=q->next;

\x09\x09\x09\x09q->next=p->next;

\x09\x09\x09\x09p->next=q;

\x09\x09\x09}

\x09\x09\x09r=p;//r指向参与比较的最后一个,不断向前移动

\x09}

}

bool judge(polynomail Head)

{

\x09arrange2(Head);

\x09polynomail p;

\x09p=Head->next;

\x09bool xi=false;

\x09while(p!=NULL&&p->next!=NULL&&!xi)

\x09{

\x09\x09if(p->data.zhishu-p->next->data.zhishu>1)

\x09\x09\x09xi=true;

\x09\x09p=p->next;

\x09}

\x09return xi;

}

/*打印多项式,求项数*/

void printpolyn(polynomail P)

{

\x09int i;

\x09polynomail q;

\x09if(P==NULL)

\x09\x09coutdata.zhishu;

\x09\x09r->next=s; r=s;

\x09\x09p=p->next;

\x09}

\x09while(q)

\x09{

\x09\x09s=new LNode;

\x09\x09s->data.xishu=q->data.xishu;

\x09\x09s->data.zhishu=q->data.zhishu;

\x09\x09r->next=s; r=s;

\x09\x09q=q->next;

\x09}

\x09r->next=NULL;

\x09if(newHead->next!=NULL&&newHead->next->next!=NULL)//合并同类项

\x09\x09newHead=hebing(newHead);

\x09coutnext;

\x09newHead=new LNode;

\x09r=newHead;

\x09while(p)

\x09{

\x09\x09s=new LNode;

\x09\x09s->data.xishu=p->data.xishu;

\x09\x09s->data.zhishu=p->data.zhishu;

\x09\x09r->next=s; r=s;

\x09\x09p=p->next;

\x09}

\x09while(q)

\x09{

\x09\x09s=new LNode;

\x09\x09s->data.xishu=-q->data.xishu;

\x09\x09s->data.zhishu=q->data.zhishu;

\x09\x09r->next=s; r=s;

q=q->next;

\x09}

\x09r->next=NULL;

if(newHead->next!=NULL&&newHead->next->next!=NULL)//合并同类项

\x09\x09newHead=hebing(newHead);

\x09coutnext)

\x09\x09for(q=pb->next;q!=NULL;q=q->next)

\x09\x09{

\x09\x09\x09s=new LNode;

\x09\x09\x09s->data.xishu=p->data.xishu*q->data.xishu;

\x09\x09\x09s->data.zhishu=p->data.zhishu+q->data.zhishu;

\x09\x09\x09r->next=s;

\x09\x09\x09r=s;

\x09\x09}

\x09\x09r->next=NULL;

\x09\x09coutnext->next!=NULL)//合并同类项

\x09\x09\x09newHead=hebing(newHead);

\x09\x09return newHead;

}

/*5、销毁已建立的两个多项式*/

void delpolyn(polynomail pa,polynomail pb)

{

\x09polynomail p,q;

\x09p=pa;

\x09while(p!=NULL)

\x09{

\x09\x09q=p;

\x09\x09p=p->next;

\x09\x09free(q);

\x09}

\x09p=pb;

\x09while(p!=NULL)

\x09{

\x09\x09q=p;

\x09\x09p=p->next;

\x09\x09free(q);

\x09}

\x09cout

解析看不懂?求助智能家教解答查看解答

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值