问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算,怎么做?

发布网友 发布时间:2022-05-20 13:25

我来回答

1个回答

热心网友 时间:2023-10-25 05:18

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedef int ElemType;

/*单项链表的声明*/

typedef struct PolynNode{

int coef; // 系数

int expn; // 指数

struct PolynNode *next; }PolynNode,*PolynList;

/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/

/*指数系数一对一对输入*/ void CreatePolyn(PolynList &L,int n)

{

int i;

下载

原文档已转码为如下格式,以便移动设备查看

数据结构(c语言)用单链表存储一元多项式,并实现两个多项式的相加运算【最新】

阅读:1037次 页数:36页 2016-03-21 举报

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedef int ElemType;

/*单项链表的声明*/

typedef struct PolynNode{

int coef; // 系数

int expn; // 指数

struct PolynNode *next; }PolynNode,*PolynList;

/*正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表*/

/*指数系数一对一对输入*/ void CreatePolyn(PolynList &L,int n)

{

int i;

PolynList p,q;

L=(PolynList)malloc(sizeof(PolynNode)); // 生成头结点

L->next=NULL;

q=L;

printf("成对输入%d个数据\n",n);

for(i=1;i<=n;i++)

{

p=(PolynList)malloc(sizeof(PolynNode));

scanf("%d%d",&p->coef,&p->expn); //指数和系数成对输入

q->next=p;

q=q->next;

}

p->next=NULL;

}

// 初始条件:单链表L已存在

// 操作结果: 依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败

void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType)) {

PolynList p=L->next;

while(p)

{

vi(p->coef, p->expn);

if(p->next)

{

printf(" + "); //“+”号的输出,最后一项后面没有“+”

}

p=p->next;

}

printf("\n");

}

/*ListTraverse()调用的函数(类型要一致)*/ void visit(ElemType c, ElemType e) {

if(c != 0)

{

printf("%dX^%d",c,e); //格式化输出多项式每一项

}

}

/* 多项式相加,原理:归并 */ /* 参数:两个已经存在的多项式 */ /* 返回值:归并后新的多项式的头结点 */

PolynList MergeList(PolynList La, PolynList Lb) {

PolynList pa, pb, pc, Lc;

pa = La->next;

pb = Lb->next;

Lc = pc = La; // 用La的头结点作为Lc的头结点

while(pa&&pb)

{

if(pa->expn < pb->expn)

{

pc->next = pa; //如果指数不相等,pc指针连上指数小的结

点,

pc = pa;

pa = pa->next; //指向该结点的指针后移

}

else if (pa ->expn > pb->expn )

{

pc->next = pb; //pc指针连上指数小的结点,

pc = pb;

pb = pb->next; //指向该结点的指针后移

}

else //(pa ->expn = pb->expn )

{

pa->coef = pa->coef + pb->coef; //指数相等时,系数相加

pc->next = pa;

pc = pa;

pa = pa->next; //两指针都往后移

pb = pb->next;

}

}

pc->next = pa ? pa:pb; // 插入剩余段

return Lc;

}

void main()

{

PolynList ha,hb,hc;

printf("非递减输入多项式ha, ");

CreatePolyn(ha,5); // 正位序输入n个元素的值

printf("非递减输入多项式hb, ");

CreatePolyn(hb,5); // 正位序输入n个元素的值

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
填地方专项志愿会影响本科二批录取吗? 地方专项计划成绩不好的可以报吗 国家专项地方专项影响本科填报吗 地方专项计划滑档影响本科录取吗 报地方专项计划会影响高考录取吗 地方专项计划影响后续录取吗 电脑最高配组装机配置组装电脑什么配置比较好 台式组装游戏电脑配置组装电脑什么配置比较好 打游戏主机电脑配置台式电脑主要是玩游戏什么配置最合适 组装高配置台式电脑组装电脑什么配置比较好 给定两个多项式,实现两个多项式相加算法。用c语言编程 两个多项式相加运算(用c语言) 找一部动画 一个男人和他的狗 guess how much i love you 动画片豆瓣评分适合多大孩子观看 求BBC《与古兽同行》&《与恐龙同行》纪录片打包下载,要求高清,中英文对照。 BBC奥运宣传片东游记在哪里看? 在哪可以看完整的超清的bbc《与恐龙同行》纪录片 根据左撇子工具公司的案例,如何做市场细分?目标市场策略是什么?如何进行市场+_百度问一问 急 急 案例分析:解答 美国的“丽”(Lee)牌牛仔裤就始终把目标市场对准占人口比例较大的那部分 个人消费者市场和生产者市场细分的区别 360p1路由器,怎样连接两台电脑上网,现在一台连接路由器不能上网, 浙江国能新能源APP理财会跑路吗 网络APP 投资被骗的分享下 我是被浙江恒悦新能被骗了两w多 是通过微信公众号“全球电力资‘ 浙江国内外汇投资mt4交易软件用着怎么样? 有人玩圣杰能源APP投资的吗? 你好!请问嘉兴市富华理财投资那个APP是骗人的吗?您是充值后取不出来钱对吗?谢谢! 浙江伟顺投资有限公司的投资app可信吗?上面主要是投资电影进去每天返息到期还本可信吗?_百度问一问 浙江靠谱的融资理财APP有哪些,知道的大概说下? 太原万柏林区餐厨垃圾投诉电话? 太原市环卫部门已经有了收餐厨垃圾的车辆,有没有人知道如何可以联系到,或者说一下联系方式。 请教各位高手一下,关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法, 两个一元多项式相加的算法怎么写啊? 两个多项式函数相加后的次数 多项式相加 如何用C语言实现两个一元多项式的相加和相乘? 自己去站点充煤气,如何才能辨别煤气给我充满了自己去充煤气一罐大概多少钱呢?呢? 用链表实现两个多项式相加 两个一元多项式相加 一元多项式的计算 能够按照指数降序排列建立并输出多项式 能够完成两个多项式的相加及相减 用c语言编写两个一元多项式的相加 多项式相加(C语言) matlab中两个不同次的多项式怎么实现相加 利用顺序表或链表表示两个一元多项式,并完成两多项式的乘法运算。 长时间站着不动,会不会有病 为什么会有一直站着不动的啊也不做事情 怎样站着不动 一个人站着不动最多能站多长时间 长时间站立,但不是站着不动,有什么利于弊,可以减肥吗? 只是站着不动会减肥吗? 小人站着不动,不听话是怎么回事