数据结构C语言用单链表存储一元多项式并实现两个多项式的相加运算_第1页
数据结构C语言用单链表存储一元多项式并实现两个多项式的相加运算_第2页
数据结构C语言用单链表存储一元多项式并实现两个多项式的相加运算_第3页
数据结构C语言用单链表存储一元多项式并实现两个多项式的相加运算_第4页
数据结构C语言用单链表存储一元多项式并实现两个多项式的相加运算_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、#include<stdio.h>  #include<stdlib.h>  #include<malloc.h>  typedef int ElemType;     /*单项链表的声明*/  typedef struct PolynNode      int coef; / 系数 

2、0;    int expn; / 指数      struct PolynNode *next;  PolynNode,*PolynList;     /*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/  /*指数系数一对一对输入*/  void CreatePolyn(PolynList &am

3、p;L,int n)        int i;      PolynList p,q;      L=(PolynList)malloc(sizeof(PolynNode); / 生成头结点      L->next=NULL;    

4、60; q=L;      printf("成对输入%d个数据n",n);      for(i=1;i<=n;i+)                p=(PolynList)malloc(sizeof(PolynNode);     

5、;     scanf("%d%d",&p->coef,&p->expn);    /指数和系数成对输入          q->next=p;          q=q->next;     

6、60;      p->next=NULL;       / 初始条件:单链表L已存在  / 操作结果: 依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败  void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType)     

7、60;  PolynList p=L->next;      while(p)                vi(p->coef, p->expn);          if(p->next)  

8、;                      printf(" + ");   /“+”号的输出,最后一项后面没有“+”                

9、;    p=p->next;            printf("n");       /*ListTraverse()调用的函数(类型要一致)*/  void visit(ElemType c, ElemType e)     

10、    if(c != 0)                printf("%dX%d",c,e);   /格式化输出多项式每一项             /*   &#

11、160;多项式相加,原理:归并        */  /* 参数:两个已经存在的多项式       */  /* 返回值:归并后新的多项式的头结点 */  PolynList MergeList(PolynList La, PolynList Lb)      

12、;  PolynList pa, pb, pc, Lc;      pa = La->next;      pb = Lb->next;      Lc = pc = La;   / 用La的头结点作为Lc的头结点 &

13、#160;    while(pa&&pb)                if(pa->expn < pb->expn)                  

14、0;                                           pc->next = pa;  &

15、#160;          /如果指数不相等,pc指针连上指数小的结点,              pc = pa;              pa = pa->next;

16、             /指向该结点的指针后移                    else if (pa ->expn > pb->expn )   

17、60;                        pc->next = pb;               /pc指针连上指数小的结点,   

18、0;          pc = pb;              pb = pb->next;               /指向该结点的指针后移 &#

19、160;                  else   /(pa ->expn = pb->expn )                   &#

20、160;    pa->coef = pa->coef + pb->coef;     /指数相等时,系数相加              pc->next = pa;          

21、    pc = pa;              pa = pa->next;             /两指针都往后移          &

22、#160;   pb = pb->next;                         pc->next = pa ? pa:pb;  / 插入剩余段     &

23、#160;   return Lc;       void main()        PolynList ha,hb,hc;      printf("非递减输入多项式ha, ");      CreatePolyn(ha,5);   

温馨提示

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

评论

0/150

提交评论