c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘

数据结构之一元多项式相乘 #include#includetypedef struct Node{ int coef; int expn; struct Node *next;}List;List *Creat(){ List *head,*p1,*p2; p1=p2=(List *)malloc(sizeof(List)); head=NULL; scanf("%d%d",&p1 阅读详情

//c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘

/*
主要函数思想:
初始化一元多项式A
初始化一元多项式B
初始化一元多项式C
给一元多项式A赋入数据
给一元多项式B赋入数据(指数升序)
把AB各项累乘放入C中
用双指针的模式消除合并累加最后得到结果
输出
*/

//---------头文件----------
#include<stdio.h>
#include<stdlib.h>

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

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

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

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

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

Bool InitPolynomial(Polynomial f);  
Bool InputData(Polynomial f);
void Multiply(Polynomial f1,Polynomial f2,Polynomial f3);
void Add(Polynomial f3);
void OutputData(Polynomial f3);

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

void main()
{
	Poly A,B,C,*f1=&A,*f2=&B,*f3=&C;
	InitPolynomial(f1);InitPolynomial(f2);InitPolynomial(f3);  
	InputData(f1);InputData(f2);  
	Multiply(f1,f2,f3);
	Add(f3);
	OutputData(f3);
}

//---------其余函数---------

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

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

void Multiply(Polynomial f1,Polynomial f2,Polynomial f3)
{
	Polynomial StartNode=f3,TempNode=f3,NewNode,Point1=f1->next,Point2;
	while(Point1)
	{
		Point2=f2->next;
		for(;Point2;Point2=Point2->next)
		{
			if(!(NewNode=(Polynomial)malloc(sizeof(Poly))))
			{
				exit(OVERFLOW);
			}
			NewNode->coef=Point1->coef*Point2->coef;
			NewNode->expn=Point1->expn+Point2->expn;
			TempNode->next=NewNode;
			NewNode->prior=TempNode;
			NewNode->next=NULL;
			TempNode=NewNode;
		}
		Point1=Point1->next;
	}
	f3=StartNode;
}

void Add(Polynomial f3)
{
	Polynomial Point1=f3->next,Point2,StartNode=f3,Temp;
	while(Point1)
	{
		for(Point2=Point1->next;Point2;)
		{
			if(Point1->expn==Point2->expn)
			{
				Point1->coef+=Point2->coef;
				Temp=Point2;
				Point2=Point2->next;
				Temp->prior->next=Temp->next;
				Temp->next->prior=Temp->prior;
				//DeleteNode(f3,i);
			}
			else
			{
				Point2=Point2->next;
			}
		}
		if(0==Point1->coef)
		{
			Temp=Point1;
			Point1=Point1->next;
			Temp->prior->next=Temp->next;
			Temp->next->prior=Temp->prior;
		}
		else
		{
			Point1=Point1->next;
		}
	}
	f3=StartNode;
}

void OutputData(Polynomial f3)
{
	f3=f3->next;  
	printf("f(x)=");  
	while(f3)  
	{  
		if(f3->expn)  
		{  
			printf("%.0fx^%d",f3->coef,f3->expn);  //这里数据为了好看为.0格式,其实不应该要的,因为是浮点型数据,而这里的浮点型恰好不为小数。
		}  
		else  
		{  
			printf("%.0f",f3->coef);  
		}  

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

}


 

蓝桥杯赛前三天冲刺指南:心态调整、三日计划与实战技巧 算法竞赛是检验编程与逻辑思维能力的有效方式,其核心在于将基础数据结构与算法知识应用于解决复杂问题。理解搜索、动态规划、贪心等核心算法原理,是提升解题能力的关键。这些技术不仅能锻炼思维,更在软件开发、人工智能等领域有广泛应用。针对蓝桥杯这类赛事,高效的赛前冲刺策略至关重要。本文聚焦于赛前最后三天的黄金窗口,提供了一套从全真模拟、精准复习到状态调整的完整计划,并融入了**动态规划**和**代码模板**等高频考点与实用技巧,旨在帮助选手将已有知识体系转化为稳定的赛场得分能力,实现最佳临场发挥。 阅读详情

相关推荐

用链表实现一元多项式的加法运算

#include using namespace std; struct Node { int coef; int exp; Node * next; Node(){coef=0;exp=0;next=nullptr;} }; class Polyn { private: //int len; public: int len; void create(); int insert(

fightingyxy的专栏 5743

数据结构用链表实现多项式乘积

这是数据结构课的一个实验,我们知道,线型表有两种表示方式,一种是顺序表示,比如说你可以用数组来实现一个顺序结构的线性表,还有一种是链式表示,用链表的形式来构造一个线性表。 这次实验要做的内容就是用链式结构来实现两个多项式的相乘,我用的教材是严蔚敏和吴伟民编著,清华大学出版社出版的教材,大家用相同教材的同学可以直接看代码,下面我简单的分析一下这个实验。 想要实现多项式的乘法,我们先来考虑怎样实现多项...

学习记录 1825

双向链表-C/C++-多项式操作

如何用双向链表实现多项式操作: #include #include #include #include using namespace std; #define OK 1 #define ERROR 0 typedef int Status; typedef struct{ //项的表示 float coef; //系数 int expm; //指数 }term,E

OrdinaryCrazy的博客 835

利用双链表实现2个一元多项式的加法和乘法运算

数据结构实验——利用双链表实现2个一元多项式的加法和乘法运算 本周数据结构实验,题目如下,前前后后三天写了十多个小时,终于写的我感觉比较满意了 1.编写使用freelist 的带头、尾结点的双向链表类的定义,实现双向链表的基本操作。 2.利用双向链表实现2个一元多项式的加法和乘法运算,运算结果得到的链表要求按照指数降序排列的多项式。 输入格式: 3 2 //第一行,两个正整数分别表示两个多项式...

Slatter的博客 3687

[记录] 数据结构----一元多项式C++实现(链表应用)

#include &lt;iostream&gt; using namespace std; class PloyNode{ friend class PloyLinkList; private: float coef;//系数 int exp;//指数 struct PloyNode* _next; public: PloyNode(float a=0,...

uttues_l的博客 558

数据结构 - 链表的合并

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

sesiria的博客 3198

数据结构—— 一元多项式的运算(相加,相减,相乘)【C语言实现】

用 C语言实现一元多项式的运算(相加,相减,相乘) 1.创建多项式时,无论指数项按什么顺序输入,输出均能实现以升幂顺序输出,且输入时有相同指数项时能够实现合并。 2.能够代入确切的X计算出最终多项式的值。 模块划分 本程序划分为9个模块,分别是: 1.主函数模块 ...

TImeart_的博客 5万+

一元多项式的相乘(C链表实现).

一元多项式的相乘(C链表实现),包括多项式的创建、相加和相乘的实现。

数据结构多项式乘法c语言,c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘...

//c语言版数据结构(奇迹冬瓜)-链表实战(4)双链表解一元多项式相乘/*主要函数思想:初始化一元多项式A初始化一元多项式B初始化一元多项式C给一元多项式A赋入数据给一元多项式B赋入数据(指数升序)把AB各项累乘放入C中用双指针的模式消除合并累加最后得到结果输出*///---------头文件----------#include#include//---------宏定义----------#...

weixin_35466750的博客 206

多项式相乘(C语言实现)

通过C语言实现多项式的相加,相乘等操作

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

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

[PAT] 一元多项式的乘法与加法运算 C语言实现

[PAT] 02-线性结构1一元多项式的乘法与加法运算 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结...

weixin_30507481的博客 1829

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

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

一元多项式相乘链表的实现

一、题目 将两个一元多项式相乘,最后将相乘的结果输出。 一元多项式指数默认递增。输入时依次输入每项系数和指数。 比如: 多项式A:1+2*x-4*x^4 多项式B:2-2*x+5^x^4 输入: 0 1 2 1 -4 4 0 0 2 0 -2 1 5 4 0 0 输出: 2+2*x+13*x^5+20*x^8 二、题目分析 首先得会一元多项式的相加:点击打开

大草的博客 4531

易灵思Trion FPGA实战:5分钟搞定MIPI硬核配置(附Interface Designer避坑指南)

本文详细介绍了易灵思Trion FPGA中MIPI硬核的快速配置方法,通过Interface Designer工具实现从时钟配置到数据收发的全流程实战。特别针对初次接触Trion系列的设计师,提供了六个关键配置陷阱及解决方案,帮助开发者高效完成嵌入式视觉和高速数据传输项目。

eee77的博客 794

从零开始:QNX SDP 8.0开发环境搭建与实战入门

本文详细介绍了如何从零开始搭建QNX SDP 8.0开发环境并进行实战入门。内容涵盖许可证获取、环境安装、命令行与IDE工具使用、BSP构建、系统镜像生成,以及编写、编译和运行第一个QNX程序的全过程。旨在帮助嵌入式开发者,特别是汽车电子和工业控制领域的工程师,快速掌握这一实时操作系统(RTOS)的开发基础。

weixin_29163857的博客 642

一元多项式的幂

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

【rotors】多旋翼无人机仿真(五)——多无人机仿真

如何创建多个无人机仿真

caiqidong321的博客 2394

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

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

shiyuKirito的博客 295

瑞萨RA6M5驱动ST7735屏幕避坑指南:从软件SPI到显示汉字与图形的完整流程

本文详细介绍了瑞萨RA6M5单片机驱动ST7735屏幕的完整流程,涵盖硬件连接、软件SPI控制、汉字显示及图形绘制优化等关键步骤。通过避坑指南和实用代码示例,帮助开发者解决屏幕初始化、时序控制、字库移植等常见问题,实现高效稳定的显示效果。

weixin_28705087的博客 275

《从0到1:CTFer成长之路》书籍配套题目-[第二章 web进阶]文件上传

[第二章 web进阶]文件上传开始行动绕过第1个限制绕过第2个限制 介绍:记录一下笔记,方便以后迅速回忆使用。 《从0到1:CTFer成长之路》书籍配套题目,来源网站:《从0到1:CTFer成长之路》 先看一下题目源码: <?php header("Content-Type:text/html; charset=utf-8"); // 每5分钟会清除一次目录下上传的文件 require_once('pclzip.lib.php'); if(!$_FILES){ echo '

weixin_46703850的博客 3411

自定义C++一元多项式类

自己定义了一个一元多项式的简单类,主要是用来实现一个简单的框架,另外就是验证编译器默认情况下会为我们的类添加那些构造函数。 /**polynomial.h*该类定义一元多项式*MAXDEGREE:定义该类最大可表示的次数*MINCOEFF:定义绝对值最小的系数*coefficient[]:存放一元多项式的系数*currentDegre...

weixin_34257076的博客 1030

群晖NAS从入门到精通的所有帖子汇总,只要这一篇就够了

本站陆陆续续的转载、原创帖子也有十几二十篇了,从不同的角度对群晖NAS的各种骚操作都有深入的讲解,虽然很多文章都不是讲的很深入,但是针对小白入门已经是足够了,希望对小白来说是一个入门,群晖NAS的大佬们勿喷,哪里写的不对的,请随时留言西安SEO优化站长一定在第一时间纠正修改。

西安SEO优化网站资源 8万+
上一篇: c语言版数据结构(奇迹冬瓜)-链表实战(3)解升序排列的一元多项式相加
下一篇: c语言版数据结构(奇迹冬瓜)-栈实战(2)整数进制转换<10进制到2,8,16进制>
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值