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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(一元稀疏多项式计算器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

一元稀疏多项式计算器.docx

1、一元稀疏多项式计算器#includestdio.h#includestdlib.h#includeconio.htypedef int elemtype;typedef struct list / 定义结构体链表 float c; / 多项式的常数域 elemtype e; / 指数域 struct list *next; /指针域 lnode,*linklist; / 结构体名称void create_jisuanqi_linklist(linklist *l) / 初始化结构体 (*l)=(linklist)malloc(sizeof(lnode); (*l)-next= NULL; vo

2、id insert_jisuqnai_linklist(linklist l) / 创建结构体 int e,n,i=1; float c; lnode *p=l; printf(How many terms in the polynomial:); scanf(%d,&n); / 输入多项式中的项数 while(n) lnode *q=(linklist)malloc(sizeof(linklist); printf(Please input NO.%ds c and e:,i); fflush(stdin); / 清除缓存数据 scanf(%f%d,&c,&e); / 分别输入多项式的常数域

3、和指数域 q-c=c; q-e=e; p-next=q; / 将结点q接入链表中 q-next=NULL; p=q; n-; i+; void chose_jisuanqi_linklist(linklist *l) / 对多项式按指数进行降序排序 lnode *p=(*l)-next; lnode *q=(lnode *)malloc(sizeof(linklist); / 定义一个结点,用于循环比较指数域的值 int tempc,tempe; while(p!=NULL) / 一直循环,直到遍历完链表中所有结点 q=p; while(q!=NULL) if(p-ee) / 交换两节点中的常

4、数和指数域 的值 tempe=p-e; tempc=p-c; p-e=q-e; p-c=q-c; q-e=tempe; q-c=tempc; q=q-next; / 指针下移 p=p-next; lnode *add_jisuanqi_linklist(linklist a,linklist b) / 执行多项式A与B相加 linklist c; / 定义一个链表C 用于存放两个多项式的和 int x; create_jisuanqi_linklist(&c); / 创建该多项式 lnode *p1=a-next; lnode *p2=b-next; lnode *t=c; t-next=NU

5、LL; lnode *p3=t; while(p1) / 遍历两个多项式中所有结点,找到指数域相同的结点,将其常数域相加 存放到链表C中 p2=b-next; while(p2) if(p1-e=p2-e) lnode *q=(lnode *)malloc(sizeof(lnode); x=p1-c+p2-c; / 将常数域相加 q-c=x; q-e=p1-e; p3-next=q; q-next=NULL; p3=q; break; else p2=p2-next; p1=p1-next; p1=a-next; / 指针复位 指向头结点的next while(p1) / 链表a与c比较,将a

6、中指数域的值未在c中出现的结点连接在链表c后 lnode *q=t-next; while(q) if(p1-e!=q-e) q=q-next; else break; if(q=NULL) lnode *q1=(lnode *)malloc(sizeof(lnode); q1-c=p1-c; q1-e=p1-e; p3-next=q1; q1-next=NULL; p3=q1; p1=p1-next; p2=b-next; while(p2) / 链表a与c比较,将a中指数域的值未在c中出现的结点连接在链表c后 lnode *q=t-next; while(q) if(p2-e!=q-e)

7、q=q-next; else break; if(q=NULL) lnode *q2=(lnode *)malloc(sizeof(lnode); q2-c=p2-c; q2-e=p2-e; p3-next=q2; q2-next=NULL; p3=q2; p2=p2-next; chose_jisuanqi_linklist(&c); / 对链表c进行安指数降序排序 return t; / 返回c的头结点lnode *jian_jisuanqi_linklist(linklist a,linklist b) / 执行多项式A与B相减 linklist c; int x; create_jis

8、uanqi_linklist(&c); lnode *p1=a-next; lnode *p2=b-next; lnode *t=c; t-next=NULL; lnode *p3=t; while(p1) p2=b-next; while(p2) if(p1-e=p2-e) lnode *q=(lnode *)malloc(sizeof(lnode); x=p1-c-p2-c; / 将两个多项式的常数项相减 q-c=x; q-e=p1-e; p3-next=q; q-next=NULL; p3=q; break; else p2=p2-next; p1=p1-next; p1=a-next;

9、 while(p1) lnode *q=t-next; while(q) if(p1-e!=q-e) q=q-next; else break; if(q=NULL) lnode *q1=(lnode *)malloc(sizeof(lnode); q1-c=p1-c; q1-e=p1-e; p3-next=q1; q1-next=NULL; p3=q1; p1=p1-next; p2=b-next; while(p2) lnode *q=t-next; while(q) if(p2-e!=q-e) q=q-next; else break; if(q=NULL) lnode *q2=(lno

10、de *)malloc(sizeof(lnode); q2-c=p2-c; q2-e=p2-e; p3-next=q2; q2-next=NULL; p3=q2; p2=p2-next; chose_jisuanqi_linklist(&c); return t;void display_jisuanqi_linklist(linklist l) / 输出链表 lnode *p=l-next; printf(%3.1f%d,p-c,p-e); p=p-next; while(p) if(p-c0) / 如果多项式的常数项大于0,则在输出项前面加一个“+” printf(+%3.1f%d,p-c

11、,p-e); p=p-next; else if(p-cc,p-e); p=p-next; else / 常数项为0,不输出 p=p-next; printf(n);#includestdio.h#includestdlib.h#includeconio.h#includejisuanqi_linklist.hvoid main() / 主函数 linklist a,b,c,d; int k;start: printf(nttt欢迎使用多项式计算器系统n); / 进入系统提示 do printf(t|*|n); / 选择模块 printf(t| 1.输入多项式A、B,并对其进行指数降序排列 |

12、n); printf(t| 2.输出多项式A 、B |n); printf(t| 3.计算多项式C=A+B |n); printf(t| 4.计算多项式D=A-B |n); printf(t| 5.输出多项式C、D |n); printf(t| 0.退出系统 |n); printf(t|*|n); printf(t 选择功能选项:); scanf(%d,&k); / 输入要选择的功能选项 switch(k) / 对号调用子函数 case 1: system(cls); / 清屏 create_jisuanqi_linklist(&a); insert_jisuqnai_linklist(a);

13、 chose_jisuanqi_linklist(&a); create_jisuanqi_linklist(&b); insert_jisuqnai_linklist(b); chose_jisuanqi_linklist(&b); system(cls);break; case 2:system(cls); printf(Polynomial A is:n); display_jisuanqi_linklist(a); printf(nPolynomial B is:n); display_jisuanqi_linklist(b); getch(); system(cls);break;

14、case 3:system(cls); c=add_jisuanqi_linklist(a,b); printf(Calculae polynomialC=A+B is successful!); getch(); system(cls);break; case 4:system(cls); d=jian_jisuanqi_linklist(a,b); printf(Calculae polynomial C=A-B is successful!); getch(); system(cls);break; case 5:system(cls); printf(Polynomial C is:n); display_jisuanqi_linklist(c); printf(nPolynomial D is:n); display_jisuanqi_linklist(d); getch(); system(cls);break; case 0:system(exit);exit(0); default:system(cls);goto start; while(1);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1