欢迎来到天天文库
浏览记录
ID:48307992
大小:62.75 KB
页数:6页
时间:2019-11-06
《数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include #include #include typedef int ElemType; /*单项链表的声明*/ typedef struct PolynNode{ int coef; // 系数 int expn; // 指数 struct PolynNode *next; }PolynNode,*PolynList; /*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/ /*指数系数一对一对输入*/ void CreatePolyn(Po
2、lynList &L,int n) { int i; PolynList p,q; L=(PolynList)malloc(sizeof(PolynNode)); // 生成头结点 L->next=NULL; q=L; printf("成对输入%d个数据",n); for(i=1;i<=n;i++) { p=(PolynList)malloc(sizeof(PolynNode)); scanf("%d%d",&p->coef,&p->expn); //指数和
3、系数成对输入 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); i
4、f(p->next) { printf(" + "); //“+”号的输出,最后一项后面没有“+” } p=p->next; } printf(""); } /*ListTraverse()调用的函数(类型要一致)*/ void visit(ElemType c, ElemType e) { if(c != 0) { printf("%dX^%d",c,e); //格式化输出多项式每一项 } } /*
5、 多项式相加,原理:归并 */ /* 参数:两个已经存在的多项式 */ /* 返回值:归并后新的多项式的头结点 */ PolynList MergeList(PolynList La, PolynList Lb) { PolynList pa, pb, pc, Lc; pa = La->next; pb = Lb->next; Lc = pc = La; // 用La的头结点作为Lc的头结点 while(pa&&pb) { if(pa->expn < pb->ex
6、pn) { pc->next = pa; //如果指数不相等,pc指针连上指数小的结点, pc = pa; pa = pa->next; //指向该结点的指针后移 } else if (pa ->expn > pb->expn ) { pc->next = pb;
7、 //pc指针连上指数小的结点, pc = pb; pb = pb->next; //指向该结点的指针后移 } else //(pa ->expn = pb->expn ) { pa->coef = pa->coef + pb->coef; //指数相等时,系数相加
此文档下载收益归作者所有