美文网首页
多项式合并

多项式合并

作者: 百合_b06b | 来源:发表于2019-01-21 14:02 被阅读0次

#include<stdio.h>

#include<stdlib.h>

//多项式的节点

typedef struct PNode{

int exp;

int coef;

struct PNode *link;

}PNode;

//多项式的头结点

typedef struct polynominal{

PNode *head;

} polynominal;

//初始化多项式

void Create(polynominal *p){

PNode *pn, *pre, *q;

p->head = (PNode*)malloc(sizeof(PNode));

p->head->exp = -1;

p->head->link = NULL;

for (;;){

pn = (PNode*)malloc(sizeof(PNode));

printf("coef:\n");

scanf_s("%d", &pn->coef);

printf("exp:\n");

scanf_s("%d", &pn->exp);

if (pn->exp < 0) break;

pre = p->head;

q = p->head->link;

while (q&&q->exp>pn->exp){

pre = q;

q = q->link;

}

pn->link = q;

pre->link = pn;

}

}

//多项式加法

void Add(polynominal *px, polynominal *qx){

PNode *q, *ql = qx->head, *p, *temp;

p = px->head->link;

q = ql->link;

while (p&&q){

while (p->exp < q->exp){

ql = q;

q = q->link;

}

if (p->exp == q->exp){

q->coef = q->coef + p->coef;

if (q->coef == 0){

ql->link = q->link;

free(q);

q = ql->link;

p = p->link;

}

else{

ql = q;

q = q->link;

p = p->link;

}

}

else{

temp = (PNode*)malloc(sizeof(PNode));

temp->coef = p->coef;

temp->exp = p->exp;

temp->link = ql->link;

ql->link = temp;

p = p->link;

}

}

}

void Output(polynominal *p){//打印多项式

if (p == NULL || p->head == NULL)

return;

struct PNode *q = p->head;

while (q){

if (q->exp == -1 || q->coef == -1){

q = q->link;

continue;

}

if (q->link)

printf("%dX^%d + ", q->coef, q->exp);

else

printf("%dX^%d", q->coef, q->exp);

q = q->link;

}

printf("\n");

}

void Destroy(polynominal *p){//撤销多项式

if (p == NULL || p->head == NULL)

return;

struct PNode *pre;

while (p->head){

pre = p->head->link;

free(p->head);

p->head = pre;

}

}

int main(){

polynominal *demo1 = (polynominal*)malloc(sizeof(polynominal));

polynominal *demo2 = (polynominal*)malloc(sizeof(polynominal));

printf("P(x):\n");

Create(demo1);//初始化多项式

printf("Q(x):\n");

Create(demo2);//初始化多项式

printf("P(x) add Q(x):\n");

Output(demo1);//输出多项式

Output(demo2);//输出多项式

Add(demo1, demo2);//加法运算

printf("P(x) add Q(x) last:\n");

Output(demo2);//输出多项式

printf("P(x) and Q(x) Destroy:\n");

Destroy(demo1);//撤销多项式

Destroy(demo2);//撤销多项式

printf("P(x) and Q(x):\n");

Output(demo1);//输出多项式

Output(demo2);//输出多项式

system("pause");

return 0;

}

相关文章

  • 八上整式乘除

    宝宝的在多项式乘以多项式主要错误是负号,还有合并同类项时系数,例如,出现了-6-9,合并结果为-3. ...

  • 单链表实现两个多项式相加

    两个多项式合并 多项式 L1 与 L2处理方法:将较短 L2 ,合并到长的 L1 通过逐项比较,依次添加 L1 连...

  • 多项式合并

    #include #include //多项式的节点 typedef struct PNode{ int exp;...

  • 顺序表实现多项式合并

    类似于有序表合并(顺序表中有介绍) 1.两个多项式合并式,需要考虑指数不尽相同的情况,故采用结构体(包括指数和系数...

  • 单链表实现多项式合并

    类似于有序表合并(单链表中有介绍) 1.两个多项式合并式,需要考虑指数不尽相同的情况,故采用结构体(包括指数和系数...

  • 2017-11-03

    代数式(书写要求) 整式 单项式(系数,次数) 多项式(几次几项式,最高项,常数项) 同类项 合并同类项的计算。

  • MATLAB编程及应用-第5章 多项式与数据分析

    第5章 多项式与数据分析5.1 多项式5.1.1 多项式的四则运算5.1.2 多项式的导函数5.1.3 多项式的求...

  • 多项式乘除法的LFSR实现

    1. 定义操作 定于多项式加减操作为异或,定义乘除为与; 2. 多项式乘法&LFSR表示 有两个多项式: 多项式的...

  • Jordan标准型

    〇、多项式(小学知识) 1、多项式的次数 设其中,则,注意零多项式是没有次数或无穷次的,零次多项式就是非零常数多项...

  • 38.分数函数,分子中变量最高次数高于分母,可以拆分出新的分数函

    这利用了多项式的除法,因为分数函数的分子与分母都是多项式。 假如分子是更高次的多项式,那么总可除以分母,得到多项式...

网友评论

      本文标题:多项式合并

      本文链接:https://www.haomeiwen.com/subject/yfdcjqtx.html