两个多项式相加
来源:互联网 发布:淘宝销售法则有哪些 编辑:程序博客网 时间:2024/06/05 04:53
编写将两个多项式相加的函数。不要毁坏输入数据。如果这两个多项式分别有M项和N项,那么你的程序的复杂度是多少。
#include <stdio.h>#include <stdlib.h>struct poly_list;typedef struct poly_list *Poly;typedef struct poly_list *Position;struct poly_list{ int coef; int Exp; Position next;};//createPoly Create(){ Poly p=malloc(sizeof(struct poly_list)); p->coef=-1; p->Exp=-1; p->next=NULL; return p;}//insertvoid Insert(int coeff,int exponent,Poly p_root){ Position p=p_root; while(p->next!=NULL) { p=p->next; } Position p_tem=malloc(sizeof(struct poly_list)); p_tem->coef=coeff; p_tem->Exp=exponent; p_tem->next=p->next; p->next=p_tem;}void traverse(Poly p_root){ if(p_root->next==NULL) printf("error ,the list is empty\n"); else { Position p_tem=p_root->next; while(p_tem!=NULL) { printf("(%d,%d)\n",p_tem->coef,p_tem->Exp); p_tem=p_tem->next; } }}Poly Add(Poly p_1,Poly p_2){ if(p_1->next==NULL&&p_2->next!=NULL) return p_2; if(p_1->next!=NULL&&p_2->next==NULL) return p_1; if(p_1->next==NULL&&p_2->next==NULL) return NULL; if(p_1->next!=NULL&&p_2->next!=NULL) { Poly p_3=Create(); Position p1_tem=p_1->next; Position p2_tem=p_2->next; int p1_exp; int p2_exp; while(p1_tem!=NULL) { p1_exp=p1_tem->Exp; while(p2_tem!=NULL) { p2_exp=p2_tem->Exp; if(p1_exp==p2_exp) { Insert(p1_tem->coef+p2_tem->coef,p1_exp,p_3); p2_tem=p2_tem->next; p1_tem=p1_tem->next; break; } if(p1_exp<p2_exp) { Insert(p2_tem->coef,p2_exp,p_3); p2_tem=p2_tem->next; } if(p1_exp>p2_exp) { Insert(p1_tem->coef,p1_exp,p_3); p1_tem=p1_tem->next; break; } } if(p2_tem==NULL) break; } while(p1_tem!=NULL) { Insert(p1_tem->coef,p1_exp,p_3); p1_tem=p1_tem->next; } while(p2_tem!=NULL) { Insert(p2_tem->coef,p2_tem->Exp,p_3); p2_tem=p2_tem->next; } return p_3; }}int main(){Poly p_root1=Create();Insert(10,1000,p_root1);Insert(5,14,p_root1);Insert(1,0,p_root1);Poly p_root2=Create();Insert(3,1990,p_root2);Insert(-2,1492,p_root2);Insert(11,1,p_root2);Insert(5,0,p_root2);Poly p_root3=Add(p_root1,p_root2);traverse(p_root3);return 0;}
复杂度为O(m+n);
习题二(栈)待续。。。
0 0
- 两个多项式相加!
- 两个多项式相加
- 两个多项式相加
- 两个一元多项式相加
- !求两个多项式相加运算
- 求两个多项式相加运算
- 两个多项式相加及相乘
- STL编程:两个多项式相加
- PAT-Advanced Level- 1002 两个多项式相加
- 链表之两个多项式相加
- 利用栈实现两个一元多项式相加
- 数据结构:求两个多项式的相加运算
- 两个多项式相加的程序(链表)
- 编写将两个多项式相加的函数
- 多项式相加
- 多项式相加
- 多项式相加
- 多项式相加
- 逻辑操作符和复合模式
- 一页纸说清楚“什么是深度学习?
- CSS命名规范参考及书写注意事项 (推荐)
- Longest Common Prefix - LeetCode 14
- 微软2016校园招聘在线笔试第二场
- 两个多项式相加
- PHP随机读取大文件中的若干行
- 项目部署到weblogic12c报错
- 最小公倍数
- Add Binary - LeetCode 67
- 在sublime text 3中安装中文支持
- 第七题(1~2)
- 前往江湾景点
- C语言控制输出小数点位数