实验四链式存储线性表的操作 二项式的相加42709.doc

上传人:cl****1 文档编号:551983261 上传时间:2023-01-09 格式:DOC 页数:3 大小:28KB
返回 下载 相关 举报
实验四链式存储线性表的操作 二项式的相加42709.doc_第1页
第1页 / 共3页
实验四链式存储线性表的操作 二项式的相加42709.doc_第2页
第2页 / 共3页
实验四链式存储线性表的操作 二项式的相加42709.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验四链式存储线性表的操作 二项式的相加42709.doc》由会员分享,可在线阅读,更多相关《实验四链式存储线性表的操作 二项式的相加42709.doc(3页珍藏版)》请在金锄头文库上搜索。

1、实验四链式存储线性表的操作 二项式的相加.txt对的时间遇见对的人是一生幸福;对的时间遇见错的人是一场心伤;错的时间遇见对的人是一段荒唐;错的时间遇见错的人是一声叹息。/* PolyAdd.C - 多项式相加,两个多项式采用的是链式存储结构注意:多项式按照指数递增或递减输入for example:endter la,lb:4,5creat HAenter coef,exp:6,54,4-3,28,0A(x)=6x5+4x4+-3x2+8creat HBenter coef,exp:-9,53,48,22,1-89,0B(x)=-9x5+3x4+8x2+2x1+-89A(x)+B(x)=-3x5

2、+7x4+5x2+2x1+-81*/C完整程序#include stdio.h#include conio.h#include stdlib.h/多项式中的数据项的数据类型定义typedef struct polynode int coef;/系数 int exp;/指数 struct polynode *next;/下一个数据项的地址 PNode;/三个函数的声明PNode * Creat_Linkst(int n);/创建多项式的函数void PolyAdd(PNode *pa,PNode *pb);/多项式相加的函数void Print_Linkst(PNode *H);/打印多项式的函

3、数main() PNode *HA,*HB;/HA表示多项式la的头指针, HB项式lb的头指针 int la,lb;/la表示多项式la有几个数据项;la表示多项式lb有几个数据项 printf(endter la,lb:); scanf(%d,%d,&la,&lb);/输入两个多项式所含有的数据项的个数 printf(ncreat HAn); HA=Creat_Linkst(la);/调用创建多项式的函数,创建多项式la printf(A(x)=); Print_Linkst(HA);/调用输出多项式的函数,输出多项式la printf(ncreat HBn); HB=Creat_Link

4、st(lb);/调用创建多项式的函数,创建多项式lb printf(B(x)=); Print_Linkst(HB);/调用输出多项式的函数,输出多项式lb PolyAdd(HA,HB);/调用两个多项式相加函数,完成多项式la与lb的相加 printf(nA(x)+B(x)=); Print_Linkst(HA);/输出两个多项式相加的结果 getch();PNode * Creat_Linkst(int n)/形式参数n表示的是多项式有几项。/创建多项式的函数 PNode *head,*p,*s;/head指向的是头结点,p始终指向尾结点,s是新建立一个结点地址 int i; head=(

5、PNode *) malloc(sizeof(PNode);/创建头结点,并用head指向头结点 head-next=NULL; p=head; printf(enter coef,exp:n); for(i=1;icoef,&s-exp);/给结点输入系数和指数 s-next=NULL; p-next=s;p=s; return(head);/返回多项式的头结点void PolyAdd(PNode *pa,PNode *pb)/多项式的相加函数,把多项式lb中的数据项和la的数据项相加,结果存放在多项式la中 PNode *pre,*qa,*qb,*q;/ int sum; pre=pa;/

6、pre始终指向正在操作的结点的前驱结点 qa=pa-next;/qa指向la的首原结点 qb=pb-next;/qb指向lb的首原结点 while(qa&qb)/当两个多项式中的数据项都还没有比较完的时候,条件成立 if(qa-exp=qb-exp)/当两个多项式的某一个数据相的指数相同时,进行加操作 sum=qa-coef+qb-coef;/指数相同的情况下系数相加 if(sum)/如果相加的和不为零,条件成立 qa-coef=sum;pre=qa;/把两个系数相加的结果存放到la多项式相应的数据项的系数域中 else/否则两个系数相加为零,删除该结点 pre-next=qa-next;fr

7、ee(qa); qa=pre-next; q=qb;qb=qb-next;free(q); else /否则两个多项式的的数据项的指数不相等 if(qa-expqb-exp)pre=qa;qa=qa-next; else pre-next=qb;pre=qb; qb=qb-next;pre-next=qa; if(qb) pre-next=qb; free(pb);void Print_Linkst(PNode *H) PNode *p; p=H-next; while(p-next) printf(%dx%d,p-coef,p-exp);p=p-next; if(p-coef0)printf(+); if(p-exp) printf(%dx%dn,p-coef,p-exp); else printf(%dn,p-coef);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号