数据结构实验,用链表实现多项式加减乘.doc

数据结构实验,用链表实现多项式加减乘.doc

ID:49655996

大小:139.00 KB

页数:17页

时间:2020-03-03

数据结构实验,用链表实现多项式加减乘.doc_第1页
数据结构实验,用链表实现多项式加减乘.doc_第2页
数据结构实验,用链表实现多项式加减乘.doc_第3页
数据结构实验,用链表实现多项式加减乘.doc_第4页
数据结构实验,用链表实现多项式加减乘.doc_第5页
资源描述:

《数据结构实验,用链表实现多项式加减乘.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#include#include#defineERROR0#definePOLYsizeof(Polynomial)typedefstructPolynomial/*用单链表存储多项式的结点结构*/{intcoef;/*多项式的系数*/intexp;/*指数*/structPolynomial*next;/*next是structPolynomial类型中的一个成员,它又指向structPolynomial类型的数据,以此建立链表*/}Polynomial;Po

2、lynomial*CreatPolyn(void)/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/{Polynomial*head,*tail,*s;intc,e;head=(Polynomial*)malloc(POLY);/*建立多项式的头结点,为头结点分配存储空间*/if(!head)exit(ERROR);tail=head;/*tail指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/printf("系数:");scanf("%d",&c);/*输入系数*/printf("指数:");scanf("%d",&e);/*输

3、入指数*/if(c==0){printf("请重新输入");returnNULL;}else{while(c!=0)/*输入系数为0时,表示多项式的输入结束*/{s=(Polynomial*)malloc(POLY);/*申请新结点*/s->coef=c;/*申请新结点后赋值*/s->exp=e;/*申请新结点后赋值*/tail->next=s;/*做尾插,插入新结点*/tail=s;/*tail始终指向单链表的表尾*/printf("系数:");scanf("%d",&c);printf("指数:");scanf("%d",&e);}tail->next=NULL

4、;/*将表的最后一个结点的next置NULL,以示表结束*/return(head);}}voidDestroyPolyn(Polynomial*p)//删除多项式{Polynomial*q;while(p->next!=NULL){q=p->next;free(p);p=q;}}intPolyLength(Polynomial*p){Polynomial*q;inti=0;q=p;while(q->next!=NULL){q=q->next;i++;}return(i);}voidOrder(Polynomial*p)/*多项式的升幂排序*/{Polynomial

5、*q;inta,b,i=0;q=p;while(q->next!=NULL){if(q->exp>q->next->exp){a=q->coef;b=q->exp;q->coef=q->next->coef;q->exp=q->next->exp;q->next->coef=a;q->next->exp=b;}q=q->next;i++;}}voidPaiXu(Polynomial*p)//重复调用升幂排序函数{intj;for(j=1;j

6、omial*polyb)/*两个一元多项式相加,将和多项式存放在多项式polya中,并将多项式ployb删除*/{Polynomial*p,*q,*he,*temp;intsum;p=polya->next;/*令p指向polya多项式链表中的第一个结点*/q=polyb->next;/*令q指向polyb多项式链表中的第一个结点*/he=polya;/*令he指向和多项式polya*/while(p!=NULL&&q!=NULL)/*当两个多项式均未扫描结束时,执行以下操作*/{if(p->expexp)/*若p指向的多项式指数小于q指的指数*/{he->

7、next=p;/*将p结点加入到和多项式中*/he=he->next;p=p->next;/*将p指针后移一位*/}elseif(p->exp==q->exp)/*若指数相等,则相应的系数相加*/{sum=p->coef+q->coef;if(sum!=0)/*系数和不为零,执行下列操作*/{p->coef=sum;he->next=p;he=he->next;p=p->next;temp=q->next;free(q);//q=q->next;q=temp;/*释放原q节点*/}else/*系数和为零,则删除结点p与q,并将指针指向下一个结点*/{temp=p

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

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

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