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语言多项式存储)