#includetypedef struct Node

{

int coef;//系数

int exp;//指数

struct Node *next;

}PolyNode;

PolyNode *Creatpoly()//创建多项式的单链表

{

PolyNode *h,*p,*q;

h=(PolyNode *)malloc(sizeof(PolyNode));

p=h;

p->next=NULL;

printf("请输入多项式的系数及其指数a,b,当系数输入0时停止输入\n");

q=(PolyNode *)malloc(sizeof(PolyNode));

scanf("%d,%d",&q->coef,&q->exp);

while(q->coef!=0)

{

p->next=q;

p=q;

q=(PolyNode *)malloc(sizeof(PolyNode));

scanf("%d,%d",&q->coef,&q->exp);

}

p->next=NULL;

return(h);

}

void Prin_poly(PolyNode *h)//将多项式输出函数

{

PolyNode *p;

p=h->next;

while(p!=NULL)

{

if(p->coef>0&&p!=h->next)

{

if(p->exp>0)

printf("+%dx^%d",p->coef,p->exp);

else if(p->exp<0)

printf("+%dx^(%d)",p->coef,p->exp);

else

printf("+%d",p->coef);

}

else if(p->coef<0&&p!=h->next)

{

if(p->exp>0)

printf("%dx^%d",p->coef,p->exp);

else if(p->exp<0)

printf("%dx^(%d)",p->coef,p->exp);

else

printf("%d",p->coef);

}

else

{

if(p->exp>0)

printf("%dx^%d",p->coef,p->exp);

else if(p->exp<0)

printf("%dx^(%d)",p->coef,p->exp);

else

printf("%d",p->coef);

}

p=p->next;

}

}

void Insort(PolyNode *h)//排序函数,使多项式中的各项按X的升幂排列

{

PolyNode *s,*p;

int t,m;

for(p=h->next;p!=NULL;p=p->next)//类似于冒泡排序

{

for(s=h->next;s->next!=NULL;s=s->next)

{

if(s->exp>s->next->exp)

{

t=s->exp;

m=s->coef;

s->coef=s->next->coef;

s->exp=s->next->exp;

s->next->coef=m;

s->next->exp=t;

}

}

}

}

void UnitePoly(PolyNode *h)//合并同类项

{

PolyNode *p1,*p2,*q1,*q2,*temp;

q1=h;

p1=q1->next;

while(p1!=NULL)

{

p2=p1->next;

q2=p1;

while(p2!=NULL)

{

if(p1->exp==p2->exp)

{

p1->coef=p1->coef+p2->coef;

if(p1->coef==0)

{

temp=p2;

q2->next=p2->next;

free(temp);

temp=p1;

q1->next=p1->next;

p1=q1;

free(temp);

break;

}

else

{

temp=p2;

q2->next=p2->next;

p2=p2->next;

free(temp);

}

}

else

{

q2=p2;

p2=p2->next;

}

}

q1=p1;

p1=p1->next;

}

}

PolyNode *polymuti(PolyNode *h1,PolyNode *h2)//多项式相乘

{

PolyNode *h,*p,*p1,*p2,*q;

p1=h1->next;

h=p=(PolyNode *)malloc(sizeof(PolyNode));

p->next=NULL;

while(p1)

{

p2=h2->next;

while(p2)

{

q=(PolyNode *)malloc(sizeof(PolyNode));

q->coef=p1->coef*p2->coef;

q->exp=p1->exp+p2->exp;

p->next=q;

p=q;

p2=p2->next;

}

p1=p1->next;

}

p->next=NULL;

return(h);

}

main()

{

PolyNode *h1,*h2,*h;

h1=Creatpoly();

printf("该多项式为P1(x)=");

UnitePoly(h1);

Insort(h1);

Prin_poly(h1);

printf("\n");

h2=Creatpoly();

printf("该多项式为P2(x)=");

UnitePoly(h2);

Insort(h2);

Prin_poly(h2);

printf("\n");

printf("按任意键查看两多项式相乘结果\n");

getch();

printf("相乘后的多项式为P(x)=");

h=polymuti(h1,h2);

UnitePoly(h);

Insort(h);

Prin_poly(h);

printf("\n");

}

高阶多项式合并同类项程序c语言,c语言实现两多项式相乘并排序合并同类项.doc...相关推荐

  1. c语言node类型_高阶宏的妙用技法,C语言宏你所不知道的聪明技巧

    前言 什么是高阶宏?高阶宏就是以宏为参数的宏.以宏为参数的宏这就是这篇文章的重点.其实业界领先的代码库是有很多值得我们学习的,研究开源库也可以是大家学习的方向哦,通常开源库中90%的内容超出了新手对于 ...

  2. 高阶系统降阶matlab程序,高阶系统的降阶控制研究

    引言近年来,主动控制技术在很多方面都得到了很大的发展,尤其在飞机设计中,这门新技术越来越为人们所重视.但是,对飞机实施主动控制很关键的一个问题就是其实时性,离开实时性,主动控制就没韦现实性可言.计算机 ...

  3. 高阶多项式合并同类项程序c语言,c语言实现两多项式相乘,并排序,合并同类项.doc...

    #include typedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Cr ...

  4. C++学习从基础到高阶(基于黑马程序员教程)

    视频链接:黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难(52个小时) C语言中文网:http://c.biancheng.net/cplus/ Visual Studio 2022 ...

  5. 【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )

    文章目录 I . List 集合高阶函数引入 II . Kotlin 数据类 ( data class ) III . Java 代码 与 Kotlin 代码实现对比 ( 查询年龄最大的 ) IV . ...

  6. Python:高阶函数

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python高效技巧(三)---查缺补漏(时间处理、shutill模块、高阶函数、装饰器)

    Python高效技巧 前言: 函数 1.可接受任意数量参数的函数和关键词参数 2.匿名函数 lambda 二.其他 1.关于序列的各种方法 2.产生器表达式 三. 查缺补漏 1.时间处理 1. cal ...

  8. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. Python函数式编程简介(一)高阶函数

    本文概括介绍Python函数式编程的一些概念及用法,详细请参考: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df ...

最新文章

  1. 图形数据库Neo4j基本了解
  2. OpenCV再升级!修改一行代码,将图像匹配效果提升14%!
  3. 40张图看懂分布式追踪系统原理及实践
  4. vivo手机计算机错误怎么弄,手机计算器出错,原因竟是人性化设计
  5. python进制转化大全
  6. sql注入-union select
  7. nfs:client mount成功,但是进入目录时出现Permission denied
  8. 删除重复数据sql语句
  9. MacBook 如何一次性关闭所有程序的通知消息
  10. 基于jsp+mysql+Spring的SpringBoot招聘网站项目(完整源码+sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历
  11. ubuntu卸载fcitx后引发的问题修复
  12. 获取自Linux上的Epoch以来的当前时间,Bash
  13. python视频操作:下载、选取特定帧、批量导入ppt及硬字幕提取
  14. 如何让div靠右_如何实现CSS右对齐
  15. ZOJ 题目分类以及部分题目简单思路
  16. android 位移传感器 坐标,一种基于1D位移传感器的三维空间坐标测量方法与流程...
  17. 彻底搞懂数据库内连接、外连接
  18. android dlna 服务器,安卓手机DLNA功能使用方法
  19. 征途服务器文件,如何使用云服务器架设征途
  20. 微软家族的首个跨平台开发工具 Visual Studio Code

热门文章

  1. Windows Terminal v0.7 发布:支持分屏、重排选项卡和改进 UI
  2. 从SQL Server生成文档
  3. linux的帮助命令有,Linux帮助命令有哪些
  4. java xms xmx 默认值_JVM启动参数-Xmx的默认值是多少?
  5. 从其他电脑拷mysql到自己电脑_mysql 数据库复制到其他电脑
  6. 移动端点击链接元素出现蓝色边框或者出现半透明蓝色背景
  7. oracle 临时文件 大文件,Oracle中临时文件File#和Db_files关系
  8. mysql新增表字段回滚_MySql学习笔记四
  9. 500内部privoxy错误_【热议】喝崂山啤酒中奖500听,却只能兑换500毫升?!
  10. c语言数组统计条形图,【D3.js数据可视化系列教程】--(十)更自由的条形图