c语言版数据结构(奇迹冬瓜)-链表实战(3)解升序排列的一元多项式相加

C语言用带头节点的链表创建多项式并进行相关操作 #include "stdio.h"#include "string.h"#include "ctype.h"#include "stdlib.h"#include "io.h"#include "math.h"#include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 阅读详情

//c语言版数据结构(奇迹冬瓜)-链表实战(3)解升序排列的一元多项式相加

/*
主要函数思想:
初始化一元多项式A
初始化一元多项式B
初始化一元多项式C
给一元多项式A赋入数据
给一元多项式B赋入数据(指数升序)
当A的结点或者B的结点项的下一项不为空
{
    比较AB的指数
	{
	   定位当前结点A的指数,定位当前结点B的指数.
	   如果A的结点指数<B的结点指数(C的下一个结点为当前A的结点,A移动结点)
	   如果A的结点指数=B的结点指数(如果系数A+B=0,A,B结点都移动)
	   如果A的结点指数>B的结点指数(C的下一个结点为当前B的结点,B移动结点)
	}
}
当A的结点不为空
{
  c链接A接下来的结点
}
当B的结点不为空
{
  c链接B接下来的结点
}
输出
*/

//---------头文件----------

#include<stdio.h>
#include<stdlib.h>

//---------宏定义----------

#define TRUE 1
#define ERROR 0
#define OVERFLOW -2

//-----结构体和替换名------

typedef struct Node
{
	float coef;
	int expn;
	struct Node *next;
}Poly,*Polynomial;

//------函数-------

int InitPolynomial(Polynomial f);
int InputData(Polynomial f);
int Compare(int c1,int c2);
int JudgeCoefZero(float a1,float a2);
void OutPut(Polynomial f);

//-----主函数-----

void main()
{
	Poly A,B,C,*f1=&A,*f2=&B,*f3=&C;
	int d;
	InitPolynomial(f1);InitPolynomial(f2);InitPolynomial(f3);
	InputData(f1);InputData(f2);
	f1=f1->next;
	f2=f2->next;
	while(f1&&f2)
	{
		d=Compare(f1->expn,f2->expn);
		switch(d)
		{
		   case -1:f3->next=f1;f1=f1->next;f3=f3->next;break;
		   case 0:if(!JudgeCoefZero(f1->coef,f2->coef))
				  {
					  f1->coef+=f2->coef;
					  f3->next=f1;
					  f3=f3->next;
				  }
				  f1=f1->next;
				  f2=f2->next;
				  break;
		   case 1:f3->next=f2;f2=f2->next;f3=f3->next;break;
		}
	}
	if(f1)
	{
		f3->next=f1;
	}
	if(f2)
	{
		f3->next=f2;
	}
	OutPut(&C);
}

int InitPolynomial(Polynomial f)
{
	if(!(f=(Polynomial)malloc(sizeof(Poly))))
	{
		exit(OVERFLOW);
	}
	f->next=NULL;
	return TRUE;
}

int InputData(Polynomial f)
{
	Polynomial StartNode=f,Tempf=f,NewNode;
	int n;
	printf("输入多项式的项数:");
	do
	{
		scanf("%d",&n);
		if(n<0)
		{
			printf("输入错误!重新输入.\n");
		}
	}while(n<0);
	printf("按升序输入一元多项式的系数和指数:\n");
	for(;n>0;n--)
	{
		if(!(NewNode=(Polynomial)malloc(sizeof(Poly))))
	    {
			exit(OVERFLOW);
		}
		scanf("%f%d",&NewNode->coef,&NewNode->expn);
		Tempf->next=NewNode;
		NewNode->next=NULL;
		Tempf=NewNode;
	}
	f=StartNode;
	return TRUE;
}

int Compare(int c1,int c2)
{
	if(c1>c2)
	{
		return 1;
	}
	else if(c1==c2)
	{
		return 0;
	}
	else
	{
		return -1;
	}
}

int JudgeCoefZero(float a1,float a2)
{
	return 0==a1+a2?1:0;
}

void OutPut(Polynomial f)
{
	f=f->next;
	printf("f(x)=");
	while(f)
	{
		if(f->expn)
		{
			printf("%fx^%d",f->coef,f->expn);
		}
		else
		{
			printf("%f",f->coef);
		}

		f=f->next;
		if(f&&f->coef>0)
		{
			printf("+");
		}
	}
	getchar();
	getchar();
}


 

数据结构实验1 一元多项式的加减法 实验一  线性表操作(一元多项式的运算) 实验目的 定义线性表的链式存储 2、实现对线性表的一些基本操作和具体函数定义   实验要求: 1、定义线性表的链式存储; 2、实现对线性表的一些基本操作和具体函数定义。 3、定义输出一元多项式的函数; 4、编写主程序调用上面的函数实现一元多项式的加减。   数据输入输出要求:   输入示例: 3 2 3 3 4 5 7 5... 阅读详情

相关推荐

数据结构 - 链表的合并

今天有童鞋在群里问怎么合并两个有序链表。尝试写了一下,递归方式比较直观而且不容易出错,非递归的话代码可读性差一点而且也容易写错。这里提供一下主要代码。注意:如果是双向链表会更加复杂需要同时维护每个节点的两个指针,为了避免出错。双向链表强力建议增加头尾的哨兵节点。定义一个链表的节点如下:template &lt;typename Comparable&gt; struct Node { Compa...

sesiria的博客 3198

Java线性表多项式求和_C算法与数据结构-线性表的应用,多项式求和---ShinePans

/*---上机作业作业,二项式加法---*//*---By 潘尚 ---*//*---日期: 2014-5-8 . ---*//*---题目:---*///如果有两个稀疏多项式A和B,设计算法完毕下列任务//1.输入并建立多项式A和B;//2.求两个多项式的和多项式C;//3.求两个多项式的积多项式D;//输出4个多项式A,B,C,D;#include #include #include type...

weixin_39716921的博客 176

一元稀疏多项式加减法(自动排序降序版)

Thanks for Boss. Wang ~。~   算法描述及详解请见   一元稀疏多项式(原版)——Chuck_0430   #include #include #include typedef struct Polynomial //创建结构体 { float coef; //系数域 int expn; //指数域 struct Pol

Chuck的博客 3523

数据结构课程设计:顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现...

原来做的数据结构课程设计,今天整理资料时偶然发现了,自己留着没啥意思,共享一下吧,互相交流学习 要求   设有一元多项式Am(x)和Bn(x).   Am(x)=A0+A1x1+A2x2+A3x3+… +Amxm   Bn(x)=B0+B1x1+B2x2+B3x3+… +Bnxn  请实现求M(x)= Am(x)+Bn(x)、M(x)= Am(x)-Bn(x)和M(x)= Am(x)×B...

weixin_33979363的博客 1052

多项式计算器_version1_QT实现(C++)

这个一个多项式计算器,用QT实现。编程语言C++。 很酷,很好玩!请大家多多指教!

C语言下用单链表实现一元多项式的四则运算

在C语言下实现多项式的四则运算及合并同类项,并按升序排序的功能,已成功运行!功能模块包括合并同类项,升序排序,创建多项式,输出多项式,加法,减法,乘法,除法。

java中基于循环嵌套的使用例题经典

编程题 1.求1--100之间可以被7整除的数的个数,并输出这些数; class Demo1 { public static void main(String[] args) { //记录个数 int count=0; for(int i=1;i { //能被7整除即该数对7取余为0 if(i%7==0) { System.out.print(i+",

RYJ359的博客 8166

学习Ultralytics (下载)

Ultralytics由创立,最初是为了简化目标检测模型的开发和应用,专注于构建高效、易用、性能卓越的深度学习框架。其主要产品之一是 YOLO 系列模型,尤其是最新的YOLOv5和YOLOv8,因其在精度、速度和可扩展性方面的出色表现而广受欢迎。

2301_76846375的博客 2866

线性表的应用——求解两个多项式相加问题描述(链表求解)

问题描述:假设一个多项式形式为:p(x)=c1*x^(e1)+c2*x^(e2)+...+cm*x^(em);其中ei(1≤i≤m)为整数类型的指数,并且没有相同指数的多项式项;ci(1≤i≤m)为实数类型的序数。 编写求两个多项式相加的程序。 示例代码: #include using namespace std; const int MAX = 10; struct PolyNode

seu_nuaa_zc的博客 753

电力电子技术进阶:从基础到实战的完整学习路径

本文系统阐述了电力电子技术从基础到实战的完整学习路径。首先解析了电力电子作为“电能魔术师”的核心作用,随后深入剖析了数学工具、电路电磁场与半导体器件三大基础支柱。文章重点讲解了DC-DC、DC-AC、AC-DC等核心变换拓扑,并探讨了从经典PID到现代模型预测控制(MPC)的控制策略。最后,分享了硬件设计、软件调试、电磁兼容(EMC)等实战经验与前沿趋势,为学习者提供了清晰的进阶指南。

weixin_29204205的博客 447

开源实战 | 基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程

本文详细介绍了基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程,涵盖从基础概念到实战技巧的各个环节。通过SolidWorks建模、Matlab运动学实现及轨迹优化策略,展示了如何实现高精度轨迹规划,适用于摄影、医疗等领域的机器人应用。

weixin_28331555的博客 405

【算法导论】多项式求和

一般情况下,一元n次多项式可写成: 其中,pi是指数为ei的项的非零系数,且满足 因此,我们可以采用线性表(定义:线性表是由n个数据元素构成的有限序列,比如数组、向量、链表等等)来表示: 其中,每一项的指数i可以用其系数pi的序号表示。 在通常的应用中,多项式的次数比较大,使得线性表的长度很难确定,因此我们可以考虑链表,向量也可以(c++中)。举

青峰碧陋室 8302

深入解读ES8388寄存器:从录音到播放,如何用代码控制这颗音频Codec

本文深入解析ES8388音频编解码器的寄存器设置,从录音到播放的完整控制流程。详细介绍了寄存器架构、录音通道配置、播放通道优化以及直通(Bypass)模式的高级应用,帮助开发者通过代码精准控制这颗高性能音频Codec,解决实际开发中的音质问题。

weixin_30275415的博客 551

一元多项式的幂

Function PowerPolynomial(ByVal f As String, ByVal n As Long) As String If n = 1 Then power = f: Exit Function Dim a() As Long, b, c(), s() As String, max As Long, i As Long, j As Long, k As ...

技术代码资料库 198

Unity URP炫彩干涉效果:从薄膜干涉原理到Shader Graph实现

薄膜干涉是一种常见的光学现象,指光在透明薄膜上下表面反射后产生干涉,形成彩虹色条纹。其原理基于光程差导致的相长与相消干涉,不同波长的光被选择性增强或削弱。在计算机图形学中,这一物理现象被抽象为高效的数学模型,通过Shader编程实现动态色彩变化,为游戏和实时渲染带来独特的视觉表现力。技术实现上,常采用正弦函数结合噪声纹理来模拟色彩循环,利用法线与视角点积作为基础变量,加入噪声扰动模拟厚度不均,实现随视角变化的虹彩效果。在Unity URP渲染管线中,可通过Shader Graph可视化工具或手写HLSL代码

weixin_34026997的博客 296

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 216

一元多项式的表示及相加

线性表的应用(一元多项式的表示及相加) 题目:若A = a0x0+ a1x1+a2x2+a3x3+…+anxn B = b0x0+ b1x1+b2x2+b3x3+…+bnxn 求A+B 顺序存储结构的实现 ①实现一个数组每两个元素为一个单位,左边指数,右边是系数。从系数为0,一直写到最大的那个系数。 ②利用链表的思维 上大,上移 ...

一个帅气潇洒的豆子 652

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

海康visionmaster-渲染结果:通过绑定流程或模块获取 渲染结果的方法

视觉人机器视觉的博客 2646

链表 (自写模板)和一个简单的应用(多项式相加和相乘)

      CreateList(list_own *&amp;L,int n)                         创建链表    print(list_own *L)                                             打印链表    List_insert(list_own *L,int i,int num)                 ...

shiyuKirito的博客 295

全网最全RT-DETR涨点改进,基于官方源码1:1还原,在Ultralytics项目中配置rtdetr-r18、rtdetr-r34、rtdetr-r50、rtdetr-r101版本~小论文大论文必备

本文详细介绍了如何将RT-DETR的ResNet18/34/50/101/154版本移植到ultralytics项目中。主要内容包括:1) RT-DETR核心特点,如高效混合编码器、IoU感知查询选择等;2) 提供完整ResNet核心代码;3) 分步配置指南,包括创建模块文件和修改tasks.py;4) 各版本yaml配置文件的创建方法。该方案可帮助研究者快速实现RT-DETR改进,适用于目标检测相关论文研究。所有配置文件均可正常运行,为实验部署提供了便利。

Ai缝合怪、助力小伙伴高效发论文 3937

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

问题 A: 一元多项式运算器——建立与输出

问题 A: DS-2.3.1 一元多项式运算器——建立与输出(by Yan) 时间限制: 10 Sec 内存限制: 256 MB 提交: 1694 解决: 922 [提交][状态][讨论版] 题目描述 通过键盘接收一组多项式的系数和指数,建立多项式(要求各项按指数升序排列),并按指定格式输出。 输入 第一行输入一个正整数n,表示非零项个数。 第二行输入n对整数,每对形如(7,3),表示系数为...

weixin_43740054的博客 1916

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

一元多项式求和

问题描述:设计算法用顺序表实现两个多项式相加。 数据描述:两个多项式f(x)=2x^4+3x^2-5x+10,g(x)=4x^4+10x^2+x, 求和结果:f(x)+g(x)=6x^4+13x^2-4x+10。 代码如下: #include #include #include typedef struct List{ int xishu; //系数 int zhishu; /

Singular__point的博客 1167

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: c语言版数据结构(奇迹冬瓜)-栈实战(1)栈解迷宫<迷宫算法>
下一篇: c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值