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

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

ID:48307992

大小:62.75 KB

页数:6页

时间:2019-11-06

数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_第1页
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_第2页
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_第3页
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_第4页
数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算_第5页
资源描述:

《数据结构(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;     //指数相等时,系数相加      

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。