实验四链式存储线性表的操作 二项式的相加.doc_第1页
实验四链式存储线性表的操作 二项式的相加.doc_第2页
实验四链式存储线性表的操作 二项式的相加.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 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+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);/打印多项式的函数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_Linkst(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=(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;/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;free(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-coe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论