多项式的加法和乘法
更新时间:2023-06-01 13:46:01 阅读量: 实用文档 文档下载
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct{
float coef;
int expn;
}DataType;
typedef struct node{
DataType data;
struct node *next;
}ListNode;
typedef ListNode * LinkList;
int LocateNode(LinkList L,DataType e){
ListNode *p=L->next;
while(p&&e.expn<p->data.expn)
p=p->next;
if(p==NULL||e.expn!=p->data.expn)
return 0;
else
return 1;
}
void InsertNode(LinkList L,DataType e){
ListNode *s,*p;
p=L;
while(p->next&&e.expn<p->next->data.expn)
p=p->next;
s=(ListNode *)malloc(sizeof(ListNode));
s->data.coef=e.coef;
s->data.expn=e.expn;
s->next=p->next;
p->next=s;
}
ListNode *CreatPolyn(LinkList L,int n){
LinkList pa;
int i;
DataType e;
pa=(ListNode *)malloc(sizeof(ListNode));
pa->next=NULL;
for(i=1;i<=n;i++){
printf("请输入第%d项指数和系数:\n",i);
scanf("%f%d",&e.coef,&e.expn);
if(!LocateNode(pa,e))
InsertNode(pa,e);
}
L=pa;
return L;
}
void printfList(LinkList L){
ListNode *p;
p=L->next;
while(p){
printf("%c %6.2fx^%d",(p->data.coef>0?'+':' '),p->data.coef,p->data.expn);
p=p->next;
}
printf("\n");
}
ListNode *AddPolyn(LinkList La,LinkList Lb){
ListNode *pa,*pb,*pc,*s;
LinkList Lc;
float sum;
pa=La->next;
pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data.expn>pb->data.expn){
pc->next=pa;
pc=pa;
pa=pa->next;
}
else if(pa->data.expn<pb->data.expn){
pc->next=pb;
pc=pb;
pb=pb->next;
}
else{
sum=pa->data.coef+pb->data.coef;
if(fabs(sum)>1e-6){
pa->data.coef=sum;
pc->next=pa;
pc=pa;
pa=pa->next;
s=pb;
pb=pb->next;
free(s);
}
else{
s=pa;
pa=pa->next;
free(s);
s=pb;
pb=pb->next;
free(s);
}
}
}
pc->next=pa?pa:pb;
free(Lb);
return Lc;
}
ListNode *CreatPolyn1(LinkList L,LinkList p){
LinkList pa;
DataType e;
pa=(ListNode *)malloc(sizeof(ListNode));
pa->next=NULL;
while(L->next){
e.coef=L->next->data.coef*p->data.coef;
e.expn=L->next->data.expn+p->data.expn;
if(!LocateNode(pa,e))
InsertNode(pa,e);
L=L->next;
}
L=pa;
return L;
}
ListNode *MultiplyPolyn(LinkList La1,LinkList Lb1){
LinkList pa,pc,s,p;
pa=La1;
p=Lb1->next;
pc=(ListNode *)malloc(sizeof(ListNode));
pc->next=NULL;
while(p){
s=CreatPolyn1(pa,p);
pc=AddPolyn(pc,s);
p=p->next;
}
s=pc;
return s;
}
void main(){
LinkList La,Lb,Lc;
int n,k;
printf("输入第一个多项式的项数:");
scanf("%d",&n);
printf("输入第一个多项式的每一项的系数,指数:\n");
La=CreatPolyn(La,n);
printf("第一个多项式为:");
printfList(La);
printf("输入第二个多项式的项数:");
scanf("%d",&n);
printf("输入第二个多项式的每一项的系数,指数:\n
");
Lb=CreatPolyn(Lb,n);
printf("第二个多项式为:");
printfList(Lb);
printf("输入1做加法,输入2做乘法:");
scanf("%d",&k
);
if(k==1){
Lc=AddPolyn(La,Lb);
printf("\n相加后的和多项式为:");
printfList(Lc);
}
if(k==2){
Lc=MultiplyPolyn(La,Lb);
printf("\n相乘后的积多项式为:");
printfList(Lc);
}
}
正在阅读:
多项式的加法和乘法06-01
经典语录伤感图片,60句02-08
我家的小狗“罗宾”作文350字07-14
T梁预制、架设施工方案(1)05-22
名人的经典语录精选11-20
学生考勤系统说明书04-28
基于云模型的大数据典型相关分析方法04-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 多项式
- 加法
- 乘法
- 三年级下册数学复习题选择题专训
- 四川成都家具市场调研报告
- 2014年初中学业水平考试模拟数学试卷(14)
- 网上商城建设推进建议方案
- 烷烃命名和同分异构体
- 三星经济研究院-中国海上风电产业机遇与挑战;低速电动汽车成为新亮点-110923
- 《中国近现代史纲要》重点总结
- 地藏菩萨本愿经完整版(简体)
- 广告词的修辞欣赏
- 沪科版八年级物理下学期期末模拟试题1
- 机械设备进场检查验收表
- 开放式创新下的组织网络能力构架
- 2008年中西结合执业助理医师模拟题(五)-中大网校
- 归化与异化策略在习语英汉翻译中的应用
- 食用菌题目和答案
- 动脉压力波形心排出量监测法在心脏手术中的应用进展
- 2020届江苏省泰州市高二下学期期末考试数学(理)试题(有答案)
- 浙江省六校联考高三英语
- 拼焊车门内板冲压成形性分析 - 副本
- 2010年“六.一”儿童节入场解说词