C语言链表实现简单多项式加法

本文介绍如何使用C语言基于链表实现一元多项式加法。算法思路是将多项式拆分成单项式,比较并合并指数相同的项。详细介绍了数据结构和具体代码实现。
摘要由CSDN通过智能技术生成

基于C语言实现简单的一元多项式加法

本文参考自《大话数据结构》,有错漏的地方欢迎指点。

​ 正在复习数据结构,因为还没有复习到树结构,所以这里只是用链表对一元多项式加法做简单的实现,待后面复习到树结构,会对多项式加法进行重构。

1.算法思路

一元多项式的结构固定为Ax^n,因为x是固定的,所以结构体里只需要存储系数A指数n就行;

一元多项式Ax^n的结构分为4种:

  • A=0,n!=0时,多项式为x^n,此时系数coef=0,指数exp=n;
  • A!=0,n=0时,多项式为A,此时系数coef=A,指数exp=0;
  • A=0,n=0时,多项式为0,此时系数coef=0,指数exp=0;
  • A!=0,n!=0时,多项式为Ax^n,此时系数coef=A,指数exp=n;

这里的想法是将多项式临时存储在一个字符数组里,然后对多项式每一项进行解析,得到单项的系数和指数,然后申请内存空间来存放系数和指数,然后将这个结点的指数(简称a)与和多项式的结点的指数(简称b)进行比较,如果:

  • a > b,则将a结点链接在b结点的前面;
  • a = b,则将a结点系数与b结点系数相加,保存在b结点中;
  • a < b,则继续遍历和多项式的下一个结点(next指针);

最后得到的和多项式就是运算结果。

2.多项式基本数据结构

struct Term{
    float coef;    //系数
    int exp;        //指数
    Term* next;   //下一个结点指针
	Term* front;//前一个结点 

3.具体实现代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int firstFlag = 1;		//判断是不是第一个结点 
struct Term{
   
	int coef;	//系数
	int exp;	//指数
	Term* next; //下一个结点
	Term* front;//前一个结点 
};

/* 打印多项式 */
void displayTerm(Term* sumTerm){
   
	Term* currentTerm = sumTerm;	//当前指针 
	while(currentTerm!=NULL){
   
		if(currentTerm->front!=NULL){
   
			printf("+");
		}
		if(currentTerm->coef != 1){
   
			printf("%d"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值