【结构与算法】一元多项式的相加运算
2021/9/29 11:10:50
本文主要是介绍【结构与算法】一元多项式的相加运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一元多项式相加的具体实现:
在一元多项式相加的函数中。首先会要求传入两个已经创建好的一元多项式PA,PB,然后进行相加,实现PA=PA+PB的功能。
程序执行过程:只有在Pa和Pb都不为空的时候程序才会进行循环,因为一元多项式以链式线性表以指数升序存储。所以每次进入循环都会首先比较Pa和Pb中的需要比较的qa和qb中指数的大小。如果qa的指数小,则会ha和qa指针都后移,继续比较。如果qa和qb的指数相等,则会把qa和qb的系数进行相加并赋值给qa的系数。从而实现相同指数的系数相加,加完后将qb所指结点删除,同时qa后qb指针都后移。如果qa的指数比qb大,则把qb所在的结点链接到qa的前面。qb指针继续后移。进行循环。这是就这个加法的具体实现过程。在最后,如果qa已经为空,而qb不为空,则把qb剩下的结点都直接链接在PA的最后。释放hb的头结点。
原文链接:https://blog.csdn.net/qq_38265137/article/details/80317209
代码实现
`
include <stdio.h>
include <stdlib.h>
typedef struct
{
int coef;//系数
int expn;//指数
struct UNARY *next;
} UNARY;
//升幂的一元多项式的相加
UNARY *unaryAdd(UNARY LA,UNARY LB)
{
//LA作为输出链
UNARY r,s,p,q;
int cmp;
p = LA->next;//用于比较
q = LB->next;//用于比较
s = LA;//用于记录p的前置
r = LB;//用于记录q的后置
while(p!=NULL && q!=NULL) { if(p->expn<q->expn) cmp = -1; else if(p->expn>q->expn) cmp = 1; else cmp = 0; switch(cmp) { case -1: { s = p; p = p->next; }; break; case 0: { int x = p->coef+q->coef; if(x!=0) { p->coef = x; s = p p = p->next; } else { //删除LA节点 s->next = p->next; free(p); p = s->next; //删除LB节点 r->next =q->next; free(q); q = r->next; } }; break; case 1: { r->next = q->next; q->next = s->next; s->next = q; s = q; q = r->next; }; break; } } if(q!=NULL) { //前面的结束条件 p = null 所以 p的前置s位于链表的尾部,s连接q s->next = q; } free(LB); return LA;
}
`
这篇关于【结构与算法】一元多项式的相加运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?