c语言用链表的方式实现多项式加减,如何实现C语言单链表多项式相加的操作
#include#pragma warning(disable:4996)//兼容scanf
typedef struct node {
int coef;
int expon;
struct node* link;
}Polynode,*Polynomial;
Polynomial InsertPolyLinklist(Polynomial in,Polynomial Pread) {
Pread->link = in;
Pread = in;
in->link = NULL;
return Pread;
}
Polynomial ReadPoly(void) {
Polynomial Pread = (Polynomial)malloc(sizeof(Polynode));
Pread->link = NULL;
Polynomial H = Pread;
int N;
scanf("%d ", &N);
while (N--) {
Polynomial p = (Polynomial)malloc(sizeof(Polynode));
scanf("%d %d", &p->coef, &p->expon);
Pread= InsertPolyLinklist(p,Pread);
}
Polynomial F;
F = H->link;
free(H);
return F;
}
void PrintPoly(Polynomial F) {
while(F != NULL) {
printf("%d %d ", F->coef, F->expon);
F = F->link;
}
printf("\n");
}
Polynomial Add(Polynomial p1, Polynomial p2) {
Polynomial t1=p1,t2=p2;
Polynomial p=(Polynomial)malloc(sizeof(Polynode));
p->link = NULL;
Polynomial q = p;
Polynomial read;
while (t1&&t2) {
if (t1->expon == t2->expon) {
if (t1->coef + t2->coef) {
t1->coef = t1->coef + t2->coef;
t1->expon = t1->expon;
read = t1;
q->link = read;
q = read;
t1 = t1->link;
t2 = t2->link;
}
}
else {
if (t1->expon > t2->expon){
read = t1;
q->link = read;
q = read;
t1 = t1->link;
}
else {
if (t1->expon expon) {
read = t2;
q->link = read;
q = read;
t2 = t2->link;
}
}
}
}
if (t1) {
q->link = t1;
}
if (t2) {
q->link = t2;
}
Polynomial F = p->link;
free(p);
return F;
}
int main(void) {
Polynomial p1, p2, pp, ps;
p1 = ReadPoly();
PrintPoly(p1);
p2 = ReadPoly();
PrintPoly(p2);
pp = Add(p1, p2);
PrintPoly(pp);
// ps = Mult(p1, p2);
// PrintPoly(ps);
return 0;
}
c语言用链表的方式实现多项式加减,如何实现C语言单链表多项式相加的操作相关推荐
- 用单链表的方式实现集合的基本运算(数据结构C语言版)
①用单链表来实现结合的基本运算,首先用的是单链表所以我们就先给它创建一个头结点并且为它分配空间,而结点的结构体中定义了两个属性 data域和next指针域. ②实现集合元素的插入.我用的是单链表头插法 ...
- c语言任意两个整数相减_大整数加减运算的C语言实现
大整数加减运算的 C 语言实现 一 . 问题提出培训老师给出一个题目:用 C 语言实现一 个大整数计算器.初步要求支持大整数的加.减运算,例如 8888888888888+1112=888888889 ...
- 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)
目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...
- 6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分)
6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分) 设指针la和lb分别指向两个无头结点单链表中的首元结点,试编写算法,从表la中删除自第i个元素起共len个元素,并 ...
- 数据结构(C语言)多项式加减
这是大二刚开始数据结构的平时作业,上次随便发了,没来得及写标题和内容.题目要求用链表来实现多项式的加减,其实就是设置一个两个指针进行遍历,在代码段里有一些注解,要是有不太清楚的地方可以在下面留言或是私 ...
- 二元多项式基本运算 选择合适的存储结构表示二元多项式,并实现基本的加减运算 要求: 1)二元多项式的输入采用如下方式进行键盘输入 (5y^2+7)x^4 + (3y^4+2y+9)x^2 + (2y
1. 本题最关键的部分就是指数和系数的读取和存储,可以把系数和指数存在一个N*4的数列中,第一列为系数,第二列为x的指数,第三列为y的指数,第四列可有可无,第四列可以存储两个指数的和,方便升幂和降幂. ...
- 多项式加减 List
vector与list与dequeue有何区别 /* 多项式加法和乘法示例 */ #include <list> #include <iostream> #include &l ...
- 多项式加减(数据结构乱杀+完整实验报告)
一.实验目的: 理解线性表的基本逻辑结构,完成链表及循环链表的实现 通过实验进一步理解线性表的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力,熟练掌握链表的实际应用. 二.实验内容: 题目 ...
- php数据结构链表代码,数据结构之线性表——链式存储结构之单链表(php代码实现)...
/** * * 1. 类LNode用作创建单链表时,生成新的节点. * 2. 类SingleLinkList用于创建单链表以及对单链表的一些操作方法(实例化此类就相当于创建了一个空链表) * 3. C ...
最新文章
- 服务器拒绝连接(The remote system refused the connection.)
- vb调用vc dll
- ubuntu14.04使用rails连接mysql数据库
- 深度学习笔记 第四门课 卷积神经网络 第四周 特殊应用:人脸识别和神经风格转换...
- Spring中@Async用法总结
- Silver Cow Party POJ - 3268(dijkstra+反向交换)
- iis7.5配置php环境,iis7.5安装配置php环境 - iis
- 如何自学java迅速成为java高手
- MySQL高可用--MGR入门(3)单主/多主模式切换
- MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子
- python字典用法_科学网—Python:字典和字典方法 - 刘洋洋的博文
- 零基础学python电子书-零基础学Python(全彩版)
- 条码管理系统,帮助企业打造高效的仓库管理模式
- 数据库实体关系图(ERD)
- 【云原生 | 21】Docker运行Web服务实战之Apache
- 1-3 Python基本数据类型
- 联想服务器如何修改硬盘模式,联想thinkpad如何修改硬盘模式为ahci
- 基于拉丁超立方抽样的风,光,负荷场景生成方法 风电功率场景生成 ,光伏功率场景生成,负荷场景生成
- 《需求工程--软件建模与分析》笔记
- s+清辅音,读作对应的浊辅音
热门文章
- Removed k rows containing missing values
- html5 div 鼠标跟随,CSS实用:DIV+CSS打造跟随鼠标的层
- ML基石_56_TheoryOfGeneralization
- R语言之斐波那契数列
- 神经网络(Neural Network)
- boost:从0到1开发boost(linux、clion)
- 关系抽取论文总结(relation extraction)不断更新
- 封神召唤师显示服务器爆满,封神召唤师总是显示无法连接网络
- mysql中一个表最多能有几个auto_mysql--一个表上可以指定几个auto_increment
- python 离线下载和安装第三方库 .whl wheel 文件