一元N次多项式的表示及相加
2014-08-21 09:01
387 查看
线性表 — 一元n次多项式的表示与相加
这里用线性链表的基本操作来实现一元多项式的运算:
以下是演示结果:
这里用线性链表的基本操作来实现一元多项式的运算:
//一元N次多项式相加 #include<stdio.h> #include<stdlib.h> typedef struct tagpolyn{ float coef; //系数 int expn; //指数 struct tagpolyn *next; }polyn,*LinkList; //创建链表函数 void CreatPolyn(LinkList *L) { LinkList q,s; *L=(LinkList)malloc(sizeof(polyn)); (*L)->next=*L; for(;;){ s=(LinkList)malloc(sizeof(polyn)); scanf("%f%d",&s->coef,&s->expn); if(s->coef==0 && s->expn==0)break; //当输入数据0 0时结束此循环 else{ q=*L; while((q->next != *L)&&(s->expn < q->next->expn))q=q->next; //按指数由大到小插入链表。 s->next=q->next; q->next=s; } } } //链表连接函数 void AddPolyn(LinkList La,LinkList Lb,LinkList *Lc) { *Lc=(LinkList)malloc(sizeof(polyn)); (*Lc)->next=NULL; LinkList qa=La->next,qb=Lb->next,qc=*Lc; while(qa!=La && qb!=Lb){ //当qa与qb都没有等于头结点时,进行以下操作。 if(qa->expn == qb->expn) { qa->coef+=qb->coef; qc->next=qa; qc=qa; qa=qa->next; qb=qb->next; } else if(qa->expn < qb->expn) { qc->next=qb; qc=qb; qb=qb->next; } else { qc->next=qa; qc=qa; qa=qa->next; } } if(qa!=La){// 当Lb链表插入完后,La还有剩余数据,则将这些数据接在lc的后面。 while(qa!=La){ qc->next=qa; qc=qa; qa=qa->next; } } else{ // 当La链表结束后,Lb还有剩余数据,则将这些数据接在lc的后面。 while(qb!=Lb){ qc->next=qb; qc=qb; qb=qb->next; } } qc->next=*Lc; } //链表输出函数 void PrintList(LinkList *head) { polyn *p; p=*head; while(1){//因为要输出的链表都是循环链表,因此输出控制条件应该是当指针不是指向头结点时。 printf("%.2f*x^%d",p->next->coef,p->next->expn); p=p->next; if(p->next!=*head){ printf(" + "); } else break; } printf("\n"); } int main() { LinkList pa,pb,pc; printf("请输入第一个多项式(以0 0结尾):\n"); CreatPolyn(&pa); printf("请输入第二个多项式(以0 0结尾):\n"); CreatPolyn(&pb); printf("f1(x) = "); PrintList(&pa); printf("f2(x) = "); PrintList(&pb); AddPolyn(pa,pb,&pc); printf("f1(x)+f2(x)的结果为:\nf(x) = "); PrintList(&pc); return 0; }
以下是演示结果:
相关文章推荐
- 一元多项式的表示和相加
- 一元多项式的表示及相加 数据结构
- Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
- 一元多项式的表示及相加(抽象数据类型Polynomial的实现)
- 【无浪】一元多项式的表示及相加
- 一元多项式表示和相加
- 数据结构——一元多项式的表示及相加
- Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
- 2007.08.25一元多项式的表示及相加
- 利用单链表实现一元多项式的表示及相加
- 【重学数据结构】一元多项式的表示及相加
- 一元多项式的表示及相加
- 一元多项式的表示及相加(抽象数据类型Polynomial的实现)
- 一元多项式的表示及相加
- 一元多项式的表示及相加
- 一元多项式的表示及相加 【链表的应用】
- pat(A) 1002. A+B for Polynomials (一元多项式的表示及相加)
- 数据结构学习之路-第二章:一元多项式的表示及相加
- 一元多项式表示和相加
- 数据结构 一元多项式的表示及相加