//一元多项式的求导
#include<stdio.h>
#include<malloc.h>//动态申请空间的函数的头文件
typedef struct node   //定义节点类型
{float coef;         //多项式的系数int expn;           //多项式的指数struct node * next; //结点指针域
}PLOYList;
void insert(PLOYList *head,PLOYList *input)   //查找位置插入新链节的函数,且让输入的多项式呈降序排列
{PLOYList *pre,*now;int signal=0;pre=head;if(pre->next==NULL) {pre->next=input;} //如果只有一个头结点,则把新结点直接连在后面else {now=pre->next;//如果不是只有一个头结点,则设置now指针while(signal==0){if(input->expn < now->expn){if(now->next==NULL){now->next=input;signal=1;}else{pre=now;now=pre->next;//始终让新输入的数的指数与最后一个结点中的数的指数比较,小于则插在其后面}}else if( input->expn > now->expn ){input->next=now;pre->next=input;signal=1;}//若新结点中指数比最后一个结点即now中的指数大,则插入now之前else//若指数相等则需合并为一个结点,若相加后指数为0则释放该结点{now->coef=now->coef+input->coef;signal=1;free(input);if(now->coef==0){pre->next=now->next;free(now);}}//else} //while}//else
}//voidPLOYList *creat(char ch)   //输入多项式
{PLOYList *head,*input;float x;int y;head=(PLOYList *)malloc(sizeof(PLOYList));   //创建链表头head->next=NULL;scanf("%f %d",&x,&y);//实现用户输入的第一个项,包括其指数和系数while(x!=0)//当用户没有输入结束标志0时可一直输入多项式的项,且输入一个创建一个结点{input=(PLOYList *)malloc(sizeof(PLOYList));  //创建新链节input->coef=x;input->expn=y;input->next=NULL;insert(head,input);  //每输入一项就将其排序,是的链表中多项式呈降序排列scanf("%f %d",&x,&y);}
return head;
}
PLOYList *der(PLOYList *head)//多项式求导
{PLOYList *p;p = head -> next;while (p){p -> coef = p -> coef * p -> expn;p -> expn = p -> expn--;p = p -> next;}return head;
}//将多项式的每项系数和指数相乘得到新的系数,指数减一得到新的指数即完成求导void print(PLOYList *fun)  //输出多项式,fun指要输出的多项式链表的表头
{PLOYList *printing;int flag=0;printing=fun->next;if(fun->next==NULL)//若为空表,则无需输出{printf("0\n");return;}while(flag==0){if(printing->coef>0&&fun->next!=printing)printf("+");if(printing->coef==1);else if(printing->coef==-1)printf("-");elseprintf("%f",printing->coef);if(printing->expn!=0) printf("x^%d",printing->expn);else if((printing->coef==1)||(printing->coef==-1))printf("1");if(printing->next==NULL)flag=1;elseprinting=printing->next;}
printf("\n");
}
void main()
{PLOYList *f;printf(" 注:输入多项式格式为:系数1 指数1 系数2 指数2 …… ,并以0 0 结束:\n");printf("请输入一个一元多项式:");f = creat('f');printf("这个多项式为:f(x)= ");print(f);printf("求导结果为:F(x)=f'(x)= ");f=der(f);print(f);printf("\n\n");}

转载于:https://www.cnblogs.com/zhuhengjie/p/5966949.html

C语言数据结构之一元多项式的求导相关推荐

  1. R语言学习之科学计算——求导与积分

    文章目录 说明 1 R中的表达式 2 求导 2.1 求一阶导数 2.2求高阶导数 2.3 求偏导数 3 积分 3.1 定积分 3.2 不定积分 说明 R语言的版本为4.0.2,IDE为Rstudio, ...

  2. C语言数据结构实现——一元多项式的基本运算

    问题描述: ​​​​​​ 第一种算法:顺序存储结构实现--顺序表 (1)算法思路: 算法要​实现两个一元多项式相关的相关运算,相加.相减.相乘.首先我们要选取一种存储结构来存放我们多项式的每一项,我们 ...

  3. 【数据结构】一元多项式

    实验报告格式规范,包括以下内容:(正文 宋体五号 ) 一.问题描述(标题黑体小四) 对简单的一元多项式相加.相减.求导运算. 二.实验目的 实现对简单的一元多项式相加.相减.求导运算. 三.实验设计 ...

  4. 数据结构_C语言_实验一_线性结构 ——一元多项式求导

    文章目录 实验一 线性结构 1. 实验目的 2. 实验内容 3. 实验要求 4. 实验过程 (1) 问题描述 (2) 数据结构与算法设计 (3) 程序实现 (4) 实验结果 (5) 实验总结 实验一 ...

  5. 浙江大学PAT上机题解析之1010. 一元多项式求导 (25)

    1010. 一元多项式求导 (25) 时间限制  400 ms 内存限制  32000 kB 代码长度限制  8000 B 判题程序    Standard 设计函数求一元多项式的导数. 输入格式:以 ...

  6. 数据结构之链表创建一元多项式,求一元多项式之和

    数据结构之链表创建一元多项式,求一元多项式之和 前言 对于一元多项式,我们完全可以利用线性表P(a0,a1,a2,-,an)表示,这样的线性表在求两个多项式相加等操作时确实简单,但是多于如下的多项式: ...

  7. 1010. 一元多项式求导

    题目截图: 思路: 简单模拟. 代码: 1 /* 2 1010. 一元多项式求导 3 */ 4 5 #include <stdio.h> 6 #include <string.h&g ...

  8. 7-16 一元多项式求导 (20 分)(详解+题目分析)

    7-16 一元多项式求导 (20 分) 1:题目 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: ...

  9. 一元多项式的加减以及求导

    采用链式存储结构,将两个线性链表表示的一元多项式相加减,求导并输出. #include<stdio.h> #include<stdlib.h>  typedef struct ...

  10. C++学习之路 | PTA乙级—— 1010 一元多项式求导 (25分)(精简)

    1010 一元多项式求导 (25分) 设计函数求一元多项式的导数.(注:x ​n ​​ (n为整数)的一阶导数为nx ​n−1 ​​ .) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值 ...

最新文章

  1. 小团队如何玩转物联网开发?
  2. python趣味编程10例-python趣味编程100例(99个)
  3. malloc动态分配多维数组
  4. 【PC工具】更新在线流程图绘制工具bullmind,免费云存储流程图绘制,可直接粘贴图片...
  5. c++17(9)-多参数列表
  6. jpanel把原本内容覆盖掉_A5:APP关键词覆盖你该了解哪些
  7. Python数模笔记-StatsModels 统计回归(1)简介
  8. matlab如何矩阵相除,Matlab中的矩阵除法有问题???
  9. 记录表类型 oracle,[转]关于oracle的记录类型
  10. 高数——多元函数的定义及极限
  11. mtk 手机 linux,【ZT】MTK X20编译环境搭建 烧写安卓固件详细教程
  12. autograd-自动求导系统
  13. java公社博客_Java面向对象开发学习笔记(一)
  14. ensp安装包以及虚拟USG6000V防火墙
  15. Web自动化css选择器定位法实现
  16. 我的第一行Android代码-常用布局
  17. linux 利用win网络共享上网
  18. Kubernetes - Ingress暴露应用(四)
  19. Android画一条竖线
  20. matplotlib常见函数- plt.rcParams、matshow/坐标轴设置

热门文章

  1. 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)
  2. 堪萨斯州立大学 计算机科学,堪萨斯州立大学
  3. 大学几年一直在“半瓶哐镗”的我
  4. 怎么用ps做一个黑底白字_ps怎么把白底黑字变成黑底白字
  5. 【LeetCode】72. Edit Distance
  6. java基础 day-17 设计模式(单例,工厂,代理),静态动态代理,数据库连接池(动态代理)
  7. 崂山道士、Harry Potter和人脸识别
  8. element-ui + 腾讯地图
  9. HDU6184 Counting Stars(三元环计数)
  10. 《基于卷积神经网络(CNN)的网络流量分类》优秀本科毕设实验总结