利用单链表实现一元多项式的表示及相加
来源:互联网 发布:农村男女关系混乱知乎 编辑:程序博客网 时间:2024/06/06 19:21
完善教材上的单链表实现一元多项式的表示及相加
#include <iostream>using namespace std;//定义结构体;typedef struct Polynode{ int coef; int exp; struct Polynode *next;}Polynode,*Polylist;//创建关于多项式结构体的单链表,以系数0结束输入Polylist Polycreate(){ Polynode *head,*rear,*s; int c,e; head=(Polynode *)malloc(sizeof(Polynode));//申请空间建立多项式的头结点 rear=head; scanf("%d %d",&c,&e); while(c!=0) { s=(Polynode *)malloc(sizeof(Polynode)); s->coef=c; s->exp=e; rear->next=s; rear=s; scanf("%d %d",&c,&e); }//尾插法建立单链表 rear->next=NULL; return(head);}//多项式polya和polyb相加,结果存放在head单链表中Polylist Polyadd(Polylist polya,Polylist polyb){ Polynode *head,*p,*q,*tail,*s;//head为相加后单链表的头结点,tail为尾插法的尾巴节点 int sum; head=(Polynode *)malloc(sizeof(Polynode)); p=polya->next; q=polyb->next; tail=head; while(p!=NULL&&q!=NULL) { s=(Polynode *)malloc(sizeof(Polynode)); if(p->exp<q->exp) { s->coef=p->coef; s->exp=p->exp; tail->next=s; tail=s; p=p->next; } else if(p->exp==q->exp) { sum=p->coef+q->coef; if(sum!=0) { s->coef=sum; s->exp=p->exp; tail->next=s; tail=s; p=p->next; q=q->next; } else return(head); } else { s->coef=q->coef; s->exp=q->exp; tail->next=s; tail=s; q=q->next; } } if(p!=NULL) tail->next=p; else tail->next=q; return(head);}//打印多项式void show(Polylist poly){ Polynode *p; int c; int e; p=poly->next; while(p->next!=NULL)//避免最后一项也出现加号 { c=p->coef; e=p->exp; printf("%dX^%d+",c,e); p=p->next; } c=p->coef; e=p->exp; printf("%dX^%d",c,e);}int main(){ printf("请按升幂输入多项式A,以系数为0结束:\n"); Polylist pa=Polycreate(); printf("你输入的多项式为:\n"); show(pa); printf("\n"); printf("请按升幂输入多项式B,以系数为0结束:\n"); Polylist pb=Polycreate(); printf("你输入的多项式为:\n"); show(pb); printf("\n"); Polylist pc=Polyadd(pa,pb); printf("相加之后的多项式为:\n"); show(pc); return 0;}
实验结果如下:
0 0
- 利用单链表实现一元多项式的表示及相加
- 线性表实现一元多项式的表示及相加
- 一元多项式的表示及相加
- 2.4 一元多项式的表示及相加
- 2.4一元多项式的表示及相加
- 一元多项式的表示及相加
- 一元多项式的表示及相加
- 数据结构 一元多项式的表示及相加
- 一元多项式的表示及相加 数据结构
- 链表做的一元多项式表示及相加
- 一元多项式的相加及表示
- 2.4一元多项式的表示及相加
- 一元多项式的表示及相加 【链表的应用】
- 2007.08.25一元多项式的表示及相加
- 一元N次多项式的表示及相加
- 【无浪】一元多项式的表示及相加
- 第二章(6).一元多项式的表示及相加
- 【重学数据结构】一元多项式的表示及相加
- 数据结构基本知识框图
- 安装windows+linux双系统是遇到的问题总结
- [数据挖掘]
- 漫步数学分析二十八——狄利克雷与阿贝尔测试
- Egret游戏引擎视频教程
- 利用单链表实现一元多项式的表示及相加
- GDB 调试C++
- HDU2519
- NEUTRON中的plugin和extension介绍及加载机制
- 红黑树
- 0305 块级和行级标签
- x-24
- poj 3096——Surprising Strings
- Kickstart Round A 2017 Problem.B Patterns Overlap 代补完