C语言数据结构之一元多项式的求导
//一元多项式的求导
#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语言数据结构之一元多项式的求导相关推荐
- R语言学习之科学计算——求导与积分
文章目录 说明 1 R中的表达式 2 求导 2.1 求一阶导数 2.2求高阶导数 2.3 求偏导数 3 积分 3.1 定积分 3.2 不定积分 说明 R语言的版本为4.0.2,IDE为Rstudio, ...
- C语言数据结构实现——一元多项式的基本运算
问题描述: 第一种算法:顺序存储结构实现--顺序表 (1)算法思路: 算法要实现两个一元多项式相关的相关运算,相加.相减.相乘.首先我们要选取一种存储结构来存放我们多项式的每一项,我们 ...
- 【数据结构】一元多项式
实验报告格式规范,包括以下内容:(正文 宋体五号 ) 一.问题描述(标题黑体小四) 对简单的一元多项式相加.相减.求导运算. 二.实验目的 实现对简单的一元多项式相加.相减.求导运算. 三.实验设计 ...
- 数据结构_C语言_实验一_线性结构 ——一元多项式求导
文章目录 实验一 线性结构 1. 实验目的 2. 实验内容 3. 实验要求 4. 实验过程 (1) 问题描述 (2) 数据结构与算法设计 (3) 程序实现 (4) 实验结果 (5) 实验总结 实验一 ...
- 浙江大学PAT上机题解析之1010. 一元多项式求导 (25)
1010. 一元多项式求导 (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数. 输入格式:以 ...
- 数据结构之链表创建一元多项式,求一元多项式之和
数据结构之链表创建一元多项式,求一元多项式之和 前言 对于一元多项式,我们完全可以利用线性表P(a0,a1,a2,-,an)表示,这样的线性表在求两个多项式相加等操作时确实简单,但是多于如下的多项式: ...
- 1010. 一元多项式求导
题目截图: 思路: 简单模拟. 代码: 1 /* 2 1010. 一元多项式求导 3 */ 4 5 #include <stdio.h> 6 #include <string.h&g ...
- 7-16 一元多项式求导 (20 分)(详解+题目分析)
7-16 一元多项式求导 (20 分) 1:题目 设计函数求一元多项式的导数. 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: ...
- 一元多项式的加减以及求导
采用链式存储结构,将两个线性链表表示的一元多项式相加减,求导并输出. #include<stdio.h> #include<stdlib.h> typedef struct ...
- C++学习之路 | PTA乙级—— 1010 一元多项式求导 (25分)(精简)
1010 一元多项式求导 (25分) 设计函数求一元多项式的导数.(注:x n (n为整数)的一阶导数为nx n−1 .) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值 ...
最新文章
- 小团队如何玩转物联网开发?
- python趣味编程10例-python趣味编程100例(99个)
- malloc动态分配多维数组
- 【PC工具】更新在线流程图绘制工具bullmind,免费云存储流程图绘制,可直接粘贴图片...
- c++17(9)-多参数列表
- jpanel把原本内容覆盖掉_A5:APP关键词覆盖你该了解哪些
- Python数模笔记-StatsModels 统计回归(1)简介
- matlab如何矩阵相除,Matlab中的矩阵除法有问题???
- 记录表类型 oracle,[转]关于oracle的记录类型
- 高数——多元函数的定义及极限
- mtk 手机 linux,【ZT】MTK X20编译环境搭建 烧写安卓固件详细教程
- autograd-自动求导系统
- java公社博客_Java面向对象开发学习笔记(一)
- ensp安装包以及虚拟USG6000V防火墙
- Web自动化css选择器定位法实现
- 我的第一行Android代码-常用布局
- linux 利用win网络共享上网
- Kubernetes - Ingress暴露应用(四)
- Android画一条竖线
- matplotlib常见函数- plt.rcParams、matshow/坐标轴设置
热门文章
- 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)
- 堪萨斯州立大学 计算机科学,堪萨斯州立大学
- 大学几年一直在“半瓶哐镗”的我
- 怎么用ps做一个黑底白字_ps怎么把白底黑字变成黑底白字
- 【LeetCode】72. Edit Distance
- java基础 day-17 设计模式(单例,工厂,代理),静态动态代理,数据库连接池(动态代理)
- 崂山道士、Harry Potter和人脸识别
- element-ui + 腾讯地图
- HDU6184 Counting Stars(三元环计数)
- 《基于卷积神经网络(CNN)的网络流量分类》优秀本科毕设实验总结