实验报告——2一元稀疏多项式计算器_第1页
实验报告——2一元稀疏多项式计算器_第2页
实验报告——2一元稀疏多项式计算器_第3页
实验报告——2一元稀疏多项式计算器_第4页
实验报告——2一元稀疏多项式计算器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华北水利水电学院 一元稀疏多项式计算器 实验报告20102011学年 第 一 学期 09 级 计算机科学与技术 专业班级: 2009119 学号: 200911902 姓名: 万婷婷 一、 实验目的设计一个医院稀疏多项式简单计算器熟练掌握线性表的基本操作在两种存储结构上的实现,其中以各种链表的操作和应用二、 实验要求a) 输入并建立多项式b) 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。c) 多项式a和b相加,建立多项式a+b,输出相加的多项式。d) 多项式a和b相减,建立多项式a-b,输出

2、相减的多项式。用带表头结点的单链表存储多项式。测试数据:(1) (2x+5x8-3.1x11)+(7-5x8+11x9)(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(1+x+x2 +x3 +x4 +x5 )+( -x3- x4)(4)(x+x2+x3)+0(5)(x+x3)-(-x-x-3)(6) (x+x2 +x3 )+0三、实验内容主要算法设计typedef struct nodefloat coef;int index;struct node *next;linklist;本程序涉及到多项式的建立、多项式的输出、两个多项式的相加减。用带

3、头结点的单链表存储多项式;程序中共定义了5个函数:void insert(linklist *p,linklist *h)/把节点p插入到链表h中linklist *creat_l(linklist *head,int m)/创建一个链表,项数为mvoid printf(linklist *l)linklist *addlist(linklist *head,linklist *pb)linklist *minuslist(linklist *head,linklist *pb)四、程序源代码#include#include#include#includetypedef struct node

4、float coef;int index;struct node *next;linklist;void insert(linklist *p,linklist *h)/把节点p插入到链表h中 linklist *q1,*q2; int flag=0; q1=h; if(p-coef=0) free(p); else if(q1-next=null) q1-next=p; else q2=q1-next; while(flag=0) if(p-indexindex) if(q2-next=null) q2-next=p; flag=1; else q1=q2; q2=q2-next; else

5、 if(p-indexq2-index) p-next=q2; q1-next=p; flag=1; else q2-coef=p-coef+q2-coef; if(q2-coef=0) q1-next=q2-next; free(q2); flag=1; free(p); linklist *creat_l(linklist *head,int m)/创建一个链表,项数为m int i;linklist *q;head=(linklist *)malloc(sizeof(linklist);head-next=null;for(i=1;inext=null;printf(请输入第%d项的系数

6、和指数:,i);scanf(%f,%d,&q-coef,&q-index);insert(q,head);return head;void printf(linklist *l) linklist *p,*q,*pa;int i=0;p=l-next;q=l-next;if(p=null)printf(0n);return; while(p)p=p-next;i+;printf(%d,i);while(q)printf(%g,q-coef);printf(%d,q-index); q=q-next;linklist *addlist(linklist *head,linklist *pb)li

7、nklist *pc;int flag=0;while(flag=0)if(pb-next=null)flag=1;elsepb=pb-next;pc=(linklist *)malloc(sizeof(linklist);pc-coef=pb-coef;pc-index=pb-index;pc-next=null;insert(pc,head); return head; linklist *minuslist(linklist *head,linklist *pb)linklist *pc;int flag=0;while(flag=0)if(pb-next=null)flag=1;els

8、epb=pb-next;pc=(linklist *)malloc(sizeof(linklist);pc-coef=-pb-coef;pc-index=pb-index;pc-next=null;insert(pc,head); return head;void main() int i,m,n; linklist *pa=0,*pb=0,*pc; while(1) system(cls); printf(.欢迎使用一元稀疏多项式计算器.n); printf( 请输入多项式a的项数:); scanf(%d,&m); pa=creat_l(pa,m); printf( 请输入多项式b的项数:)

9、; scanf(%d,&n); pb=creat_l(pb,n);printf(.欢迎使用一元稀疏多项式计算器.n);printf( 0.退出系统 n);printf( 1.输出多项式a n);printf( 2.输出多项式b n);printf( 3.输出多项式a+b n);printf( 4.输出多项式a-b n); while(1)printf(n 请选择操作:);scanf(%d,&i);switch(i)case 0:return;case 1:printf( 输出多项式a的整数序列为:); printf(pa); break;case 2 :printf( 输出多项式b的整数序列为

10、:);printf(pb);break;case 3: pc=addlist(pa,pb);printf( 输出多项式a+b的整数序列为:);printf(pc);break;case 4:pc=minuslist(pa,pb);printf( 输出多项式a-b的整数序列为:);printf(pc);break;default:printf(n 输入有误,请重新输入:n); 五、运行结果六、小结(不少于100字) 虽然数据结构是一门公认的比较难的课程,自己学起来也觉得有些吃力,但在本次课程设计之前,我系统地把教科书复习了一遍,大大加深了对各种数据结构的理解,运用起来更加自如。不断地翻阅各种参考书,以及在老师和同学的帮助下,基本上考虑到了所有的边界情况,反复测试各种类型的数据,强化程序的健壮性,最终顺利完成了本次课程设计。 虽然课程设计做的不够完善

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论