c语言多项式存储,数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算...

1、#include #include #include typedef int ElemType; /*单项链表的声明*/ typedef struct PolynNode int coef; / 系数 int expn; / 指数 struct PolynNode *next; PolynNode,*PolynList; /*正位序(插在表尾)输入 n 个元素的值,建立带表头结构的单链线性表*/ /*指数系数一对一对输入*/ void CreatePolyn(PolynList PolynList p,q; L=(PolynList)malloc(sizeof(PolynNode); / 生成。

2、头结点 L-next=NULL; q=L; printf(“成对输入%d 个数据n“,n); for(i=1;icoef, /指数和系数成对输入 q-next=p; q=q-next; p-next=NULL; / 初始条件:单链表 L 已存在 / 操作结果: 依次对 L 的每个数据元素调用函数 vi()。一旦 vi()失败,则操作失败void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType) PolynList p=L-next; while(p) vi(p-coef, p-expn); if(p-next) printf(“ +。

3、 “); /“+”号的输出,最后一项后面没有“+” p=p-next; printf(“n“); /*ListTraverse()调用的函数(类型要一致)*/ void visit(ElemType c, ElemType e) if(c != 0) printf(“%dX%d“,c,e); /格式化输出多项式每一项 /* 多项式相加,原理:归并 */ /* 参数:两个已经存在的多项式 */ /* 返回值:归并后新的多项式的头结点 */ PolynList MergeList(PolynList La, PolynList Lb) PolynList pa, pb, pc, Lc; pa = 。

4、La-next; pb = Lb-next; Lc = pc = La; / 用 La 的头结点作为 Lc 的头结点 while(pa /如果指数不相等,pc 指针连上指数小的结点, pc = pa; pa = pa-next; /指向该结点的指针后移 else if (pa -expn pb-expn ) pc-next = pb; /pc 指针连上指数小的结点, pc = pb; pb = pb-next; /指向该结点的指针后移 else /(pa -expn = pb-expn ) pa-coef = pa-coef + pb-coef; /指数相等时,系数相加 pc-next = p。

5、a; pc = pa; pa = pa-next; /两指针都往后移 pb = pb-next; pc-next = pa ? pa:pb; / 插入剩余段 return Lc; void main() PolynList ha,hb,hc; printf(“非递减输入多项式 ha, “); CreatePolyn(ha,5); / 正位序输入 n 个元素的值 printf(“非递减输入多项式 hb, “); CreatePolyn(hb,5); / 正位序输入 n 个元素的值 printf(“多项式 ha :“); PolynTraverse(ha, visit); printf(“n“); printf(“多项式 hb :“); PolynTraverse(hb, visit); printf(“n“); hc = MergeList(ha,hb); PolynTraverse(hc, visit); 。

《数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算》由会员飞***分享,可在线阅读,更多相关《数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算》请在金锄头文库上搜索。

C语言中,要实现能够存储多个多项式的结构,并使用指针数组来存放每个多项式的头指针,你可以创建一个包含多项式信息的数据结构,比如`PolynomialNode`,然后定义一个指针数组`Polynomials`。下面是一个简单的例子: ```c #include <stdio.h> #include <stdlib.h> // 定义多项式节点结构体 typedef struct PolynomialNode { double coefficient; // 系数 int exponent; // 指数 struct PolynomialNode* next; // 指向下一个节点的指针 } PolynomialNode; // 创建一个新的多项式节点 PolynomialNode* createPolynomialNode(double c, int e) { PolynomialNode* newNode = (PolynomialNode*)malloc(sizeof(PolynomialNode)); newNode->coefficient = c; newNode->exponent = e; newNode->next = NULL; return newNode; } // 结构用于存储多项式列表 typedef struct Polynomials { PolynomialNode* head; size_t count; } Polynomials; // 初始化多项式列表 void initPolynomials(Polynomials* polynomials) { polynomials->head = NULL; polynomials->count = 0; } // 添加新的多项式到列表 void addPolynomial(Polynomials* polynomials, double c, int e) { PolynomialNode* newNode = createPolynomialNode(c, e); if (!polynomials->head) { polynomials->head = newNode; } else { PolynomialNode* current = polynomials->head; while (current->next) { current = current->next; } current->next = newNode; } polynomials->count++; } // 打印多项式列表 void printPolynomials(const Polynomials* polynomials) { PolynomialNode* current = polynomials->head; while (current) { printf("Coefficient: %lf, Exponent: %d\n", current->coefficient, current->exponent); current = current->next; } } int main() { Polynomials polynomialsList; initPolynomials(&polynomialsList); // 添加多项式示例 addPolynomial(&polynomialsList, 2.0, 1); // x + 2 addPolynomial(&polynomialsList, -3.5, 2); // -3.5x^2 // 打印多项式 printPolynomials(&polynomialsList); return 0; } ``` 在这个例子中,我们首先定义了`PolynomialNode`和`Polynomials`结构。然后有函数来创建新节点、初始化列表、添加多项式以及打印多项式列表。在`main`函数中展示了如何操作这个多项式列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值