一元稀疏多项式加减
来源:互联网 发布:mac怎么删除照片快捷 编辑:程序博客网 时间:2024/05/17 04:16
//一元稀疏多项式加减#include<stdio.h>#include<stdlib.h>#include<math.h>#define OK1#define ERROR0typedef int status;typedef struct PNode{float coef;int expn;struct PNode *next;}PNode,*PolyNomial;/* 建立一个多项式链表 */status CreatPolyNnomial(PolyNomial &L){//建立一元稀疏多项式,按照指数递减排列,不包含指数重复项int n;//n表示一元多项式的项数,如果输入为小于0的数,则继续输入,直到n合法为止,接下来输入n项的稀疏和指数,若指数小于0,返回ERRORPolyNomial p, pre, r;L = (PolyNomial)malloc(sizeof(PNode));L->coef = NULL; L->expn = -1;L->next = NULL; printf("请输入项数:\n");scanf("%d", &n); while(n == 0){printf("输入的项数有误:\n");scanf("%d", &n); } //根据合法的系数和指数,生成结点,按照指数从大到小的顺序插入链表,若已存在指数相同的项,则放弃当前项for(int i = 1; i <= n; i++){p = (PolyNomial)malloc(sizeof(PNode)); printf("请输入%d项系数",i);scanf("%f", &p->coef); printf("请输入%d项指数",i);scanf("%d", &p->expn);p->next = NULL;pre = L;r = L->next;while(r && r->expn > p->expn){pre = r;r = r->next;}if(r == NULL || r->expn < p->expn){p->next = r;pre->next = p;}else if(r->expn == p->expn){free(p);}} return OK;}void add(PolyNomial &La,PolyNomial &Lb,PolyNomial &Lc){//求Lc=La+Lb,利用原表空间实现PolyNomial p1, p2, p3, r;int sum;p1 = La->next;p2 = Lb->next;p3 = La;while(p1 && p2){if(p1->expn == p2->expn){sum = p1->coef + p2->coef;if(sum != 0){p1->expn = sum;p3->next = p1;p3 = p1;p1 = p1->next;r = p2;p2 = p2->next;free(r);}else{r = p1; p1 = p1->next;free(r);r = p2; p2 = p2->next;free(r);}}else if(p1->expn > p2->expn){p3->next = p1;p3 = p1;p1 = p1->next;}else{p3->next = p2;p3 = p2;p2 = p2->next;}}p3->next = p1 ? p1 : p2;free(Lb);}void print(PolyNomial L){//输出多项式LPolyNomial p;p = L->next;while(p){printf("%fX^%d+", p->coef,p->expn);p = p->next;}}int main(){PolyNomial La = NULL,Lb = NULL,Lc = NULL;int ch;printf("*****************一元稀疏多项式相加*****************\n");printf("1、建立多项式La 2、建立多项式Lb 3、输出多项式La 4、输出多项式Lb 5、多项式相加 6、输出和多项式 7、退出\n");printf("请选择:");scanf("%d",&ch);while(ch!=7){switch(ch){case 1:CreatPolyNnomial(La);break;case 2:CreatPolyNnomial(Lb);break;case 3:print(La);break;case 4:print(Lb);break;case 5:add(La, Lb, Lc); break;case 6:print(La);break;default: printf("输入错误,请重新输入!\n");}printf("请选择:");scanf("%d",&ch);}return 0;}
0 0
- 一元稀疏多项式加减
- c++实现一元稀疏多项式加减
- 一元多项式加减
- 一元多项式的加减
- 一元稀疏多项式计算器
- 一元稀疏多项式
- 一元稀疏多项式计算器
- 一元稀疏多项式相加
- 数据结构-一元多项式加减程序
- 一元稀疏多项式(加减法)
- 一元稀疏多项式加减法计算器
- 单链表模拟一元多项式加减乘运算
- 一元多项式的建立及加减
- 一元多项式的加减乘数实现
- 一元多项式的加减乘运算
- 一元多项式的加减乘运算
- 一元多项式的加减以及求导
- 数据结构课程设计一元稀疏多项式计算器
- java中如何实现下载word功能
- iOS字体清单
- En(2015-12)小耳机深情陪伴
- emmet基础入门
- ssh-keygen 不是内部或外部命令
- 一元稀疏多项式加减
- Hello yii2
- 阶乘之和(南阳oj91)(水题)
- 一个备份MySQL数据库的简单Shell脚本
- WAS GC 日志分析
- Android Theme的设置
- 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
- jQuery的三种$()
- android Graphics:区域(Range)