C语言数据结构应用之多项式相加

编程入门 行业动态 更新时间:2024-10-27 20:31:10

C语言数据结构应用之<a href=https://www.elefans.com/category/jswz/34/1766651.html style=多项式相加"/>

C语言数据结构应用之多项式相加

#include<stdio.h>
#include<stdlib.h>
//Polynomial
//coef 系数
//expon 指数
struct PolyNode
{int coef;int expon;struct PolyNode *link;
};typedef struct PolyNode *Polynomial;//函数声明
void Attach(int c, int e, Polynomial *pRear);
int Compare(int a, int b);Polynomial PolyAdd(Polynomial P1, Polynomial P2)
{Polynomial front, rear, temp;rear = (Polynomial)malloc( sizeof(struct PolyNode) );front = rear;//rear->link = NULL;int sum;while(P1 && P2){switch (Compare(P1->expon,P2->expon)){case 1://如果P1的指数大,把P1添加到队列尾部Attach(P1->coef,P1->expon,&rear);P1 = P1->link;break;case -1://如果P2的指数大,把P2添加到队列尾部Attach(P2->coef,P2->expon,&rear);P2 = P2->link;break;case 0://如果指数相等,判断系数和是否为0,不为0相加后添加到队列尾sum = P1->coef + P2->coef;if(sum){Attach(sum,P1->expon,&rear);P1 = P1->link;P2 = P2->link;}break;}}//推出循环后不是P1为空,就是P2为空for(;P1;P1 = P1->link) Attach(P1->coef, P1->expon, &rear);for(;P2;P2 = P2->link) Attach(P2->coef, P2->expon, &rear);//收尾工作rear->link = NULL;temp = front;front = front->link;free(temp);return front;}
/***	将多项式的指数和系数保存到一个新的结点,然后连接到队列尾部* */
void Attach(int c, int e, Polynomial *pRear)
{//创建结点P,用于存放多项式的数据Polynomial P = (Polynomial) malloc(sizeof(struct PolyNode));//结点数据赋值P->coef = c;P->expon = e;P->link = NULL;//把P插入到队尾,P成为了新的队尾,后面要更新pRear(*pRear)->link = P;//让pRear再次指向队尾结点*pRear = P;}
/***	a 大于 b 返回 1*	a 小于 b 返回 -1*	a 等于 b 返回 0* */
int Compare(int a, int b)
{if(a>b)return 1;else if(a<b)return -1;elsereturn 0;
}

更多推荐

C语言数据结构应用之多项式相加

本文发布于:2023-07-28 20:26:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1300378.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多项式   数据结构   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!