ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:202.54KB ,
资源ID:2523849      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2523849.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(数据结构课程设计-一元多项式计算器.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数据结构课程设计-一元多项式计算器.doc

1、完整word版)数据结构课程设计-一元多项式计算器 实习1、一元稀疏多项式计算器 一、 需求分析 1. 问题描述 设计一个一元稀疏多项式简单计算器。 2. 基本要求 一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式。 (2)输出多项式,输出形式为整数序列:n, c1, e1, c2, e2, ········,cn, en ,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排列。 (3)多项式a和b想加,建立多项式a+b 。 (4)多项式a和b想减,建立多项式a-b 。 3. 测试数据 (1) (2x+5x8-3.

2、1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9+12x-3-x) (3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(1+x+x2+x5) (4) (x+x3)+(-x-x3)=0 (5) (x+x100)+(x100+x200)=(x+2x100+x200) (6) (x+x2+x3)+0=(x+x2+x3) (7) 互换测试数据的前后两个多项式。 4. 实现提示 用带表头结点

3、的单链表存储多项式。 二、概要设计 为实现上述程序功能,应用带头结点的单链表存储多项式。为此需要一个抽象数据类型:一元多项式。 1.抽象数据类型一元多项式定义为: ATD Ploynomial{ 数据对象:D={ai|ai∈Termset, i=1,2,3···,m,m≥0 Termset中的每个元素包含一个表示系数的实数和表示指数的整数} 数据关系:R1={ai-1,ai∈D,且ai-1中的指数

4、ead, m) 操作结果:建立一个头指针为head、项数为m的一元多项式。 DestroyLinklist( p) 初始条件:一元多项式p已存在。 操作结果:销毁一元多项式p。 PrintLinklist( P) 初始条件:一元多项式p已存在。 操作结果:输出一元多项式p。 Compare(a,b) 初始条件:项a,b已存在。 操作结果:比较a,b中x的指数的大小。 AddLinklist(pa,pb) 初始条件:一元多项式pa,pb已存在。 操作结果:完成一元多项式pa,pb的相加运算。 SubtractionLinklist(Sa,Sb) 初始条件:

5、一元多项式Sa,Sb已存在。 操作结果:完成一元多项式Sa,Sb的相减运算。 } ATD Ploynomial 三、详细设计(源代码) (使用C语言) #include #include #define maxlen 10 #define large 999 typedef struct Linklistomial { float coef; int expn; struct Linklistomial *next; }Linklistomial,*Linklist;//结点类型,指针类型 vo

6、id Insert(Linklist p,Linklist h) {// h已存在插入p项 if(p->coef==0) free(p);//系数为0的话释放结点 else { Linklist q1,q2; q1=h; q2=h->next; while(q2&&p->expnexpn) { //查找插入位置 q1=q2; q2=q2->next; } if(

7、q2&&p->expn==q2->expn) { //将指数相同相合并 q2->coef+=p->coef; free(p); if(!q2->coef) {//系数为0的话释放结点 q1->next=q2->next; free(q2); } } else { //指数为新时将结点插入 p->next=q2;

8、 q1->next=p; } } } Linklist CreateLinklist(Linklist head,int m) {//建立一个头指针为head、项数为m的一元多项式 int i; Linklist p; p=head=(Linklist)malloc(sizeof(struct Linklistomial)); head->next=NULL; for(i=0;i

9、nklistomial));//建立新结点以接收数据 printf("请输入第%d项的系数与指数:",i+1); scanf("%f %d",&p->coef,&p->expn); Insert(p,head); //调用Insert函数插入结点 } return head; } void DestroyLinklist(Linklist p) {//销毁多项式p Linklist D1,D2; D1=p; while(D1) { D2=D1->n

10、ext; free(D1); D1=D2; } } void PrintLinklist(Linklist P) {//输出一元多项式p Linklist q=P->next; int flag=1; //项数计数器 if(!q) { //若多项式为空,输出0 putchar('0'); printf("\n"); return; } while(q) { if(q->coef>0&&flag!=

11、1) putchar('+'); //系数大于0且不是第一项 if(q->coef!=1&&q->coef!=-1) { //系数非1或-1的普通情况 printf("%g",q->coef); if(q->expn==1) putchar('X'); else if(q->expn) printf("X^%d",q->expn); } else { if(q->coef==1)

12、 { if(!q->expn) putchar('1'); else if(q->expn==1) putchar('X'); else printf("X^%d",q->expn); } if(q->coef==-1) { if(!q->expn)

13、 printf("-1"); else if(q->expn==1) printf("-X"); else printf("-X^%d",q->expn); } } q=q->next; flag++; } printf("\n"); } int Compare(Linklist a,Linklist b)

14、 {//比较a,b中x的指数的大小 if(a&&b) { if(!b||a->expn>b->expn) return 1; else if(!a||a->expnexpn) return -1; else return 0; } else if(!a&&b)//a多项式已空,但b多项式非空 return -1; else//b多项式已空,但a多项式非空 return 1; }

15、 Linklist AddLinklist(Linklist pa,Linklist pb) {//求解并建立多项式a+b,返回其头指针 Linklist qa=pa->next; Linklist qb=pb->next; Linklist headc,hc,qc; hc=(Linklist)malloc(sizeof(struct Linklistomial));//建立头结点 hc->next=NULL; headc=hc; while(qa||qb) { qc=(Linklist)

16、malloc(sizeof(struct Linklistomial)); switch(Compare(qa,qb)) { case 1: { qc->coef=qa->coef; qc->expn=qa->expn; qa=qa->next; break; } case 0: {

17、 qc->coef=qa->coef+qb->coef; qc->expn=qa->expn; qa=qa->next; qb=qb->next; break; } case -1: { qc->coef=qb->coef; qc->expn=qb->expn; qb

18、qb->next; break; } } if(qc->coef!=0) { qc->next=hc->next; hc->next=qc; hc=qc; } else free(qc);//当相加系数为0时,释放该结点 } return headc; } Linklist SubtractionLinklist(Linklist S

19、a,Linklist Sb) {//求解并建立多项式a-b,返回其头指针 Linklist Cb=Sb->next; while(Cb) { Cb->coef=(-1)*Cb->coef; Cb=Cb->next; } return AddLinklist(Sa,Sb); } int main() { int m,n,a=1; char flag; Linklist pa=0,pb=0,pc; printf("

20、 欢迎使用一元多项式加法器\n\n");//输出菜单 printf(" *******************************************************\n"); printf(" * 一元多项式简单运算器 *\n"); printf(" * *\n"); printf(" *

21、 A: 输入多项式a B: 输入多项式b *\n"); printf(" * *\n"); printf(" * C: 输出多项式a D: 输出多项式b *\n"); printf(" * *\n"); printf(" *

22、 E: 输出a+b F: 输出a-b *\n"); printf(" * *\n"); printf(" * G: 使用完毕! *\n"); printf(" *******************************************************\n"); w

23、hile(a) { printf("\n 请选择操作:"); scanf(" %c",&flag);//空格符号一定要注意 switch(flag) { case'A': case'a': { printf("下面进行多项式a的输入:\n"); printf("请输入a的项数:"); scanf

24、"%d",&m); pa=CreateLinklist(pa,m);//建立多项式a break; } case'B': case'b': { printf("下面进行多项式b的输入:\n"); printf("请输入b的项数:"); scanf("%d",&n);

25、 pb=CreateLinklist(pb,n);//建立多项式b break; } case'C': case'c': { printf("\n 多项式a="); PrintLinklist(pa); break; }

26、 case'D': case'd': { printf("\n 多项式b="); PrintLinklist(pb); break; } case'E': case'e': { pc=AddLinklist(pa,pb);

27、 printf("\n a+b="); PrintLinklist(pc); break; } case'F': case'f': { pc=SubtractionLinklist(pa,pb); printf("\n a-b=");

28、 PrintLinklist(pc); break; } case'G': case'g': { DestroyLinklist(pa); DestroyLinklist(pb); a=0; printf("\n 欢迎下次使用!\n"); break; } default: printf("\n 您的选择错误,请重新选择!\n"); } } return 0; } 四、调试分析 编译环境为CodeBlocks。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服