数据结构+实验报告+线性表及其应用(多项式相加、相乘)等.docVIP

  • 19
  • 0
  • 约1.71万字
  • 约 29页
  • 2018-06-09 发布于浙江
  • 举报

数据结构+实验报告+线性表及其应用(多项式相加、相乘)等.doc

福建农林大学计算机与信息学院 (程序设计类课程) 实验报告 课程名称: 算法与数据结构 姓 名: 谢飞乐 系: 计算机 专 业: 计算机科学与技术 年 级: 2007 学 号: 071152032 指导教师: 宁正元 职 称: 教授 2009 年 6 月 1 日 实验项目列表 序号 实验项目名称 成绩 指导教师 1 线性表及其应用(多项式相加、相乘) 2 哈弗曼树及哈弗曼编码译码的实现 3 Dijkstra最短路径 或Prim最小生成树 4 (快速、堆、归并)排序算法的设计 5 构造平衡二叉排序树 6 7 8 9 10 11 12 福建农林大学计算机与信息学院实验报告 系: 计算机系 专业: 计算机科学与技术 年级: 2007 姓名: 谢飞乐 学号: 071152032 实验室号_ 田_513_ 计算机号 25 实验时间: 09.3.25下午10、11 节 指导教师签字: 宁正元 成绩: 实验一 线性表及其应用 实验目的和要求 1、掌握线性表的插入、删除、查找等基本操作设计与实现 2、学习利用线性表提供的接口去求解实际问题 3、熟悉线性表的的存储方法 实验内容和原理 1、实验内容:设计一个一元多项式的简单计算器,其基本功能有①输入并建立多项式;②输出多项式;③多项式相加。可利用单链表或单循环链表实现之。 2、实验原理:以线性表来描述一元多项式,存储结构采用单链表,每个结点存储的多项式中某一项的系数和指数,建立单链表时指数高的结点列于指数低的 结点之后,即线性表的元素按指数递增有序排列。 实验环境 Visual C++ 6.0 及PC机 算法描述及实验步骤 思想算法: 以线性表来描述一元多项式,存储结构采用单链表,每个结点存储的多项式中某一项的系数和指数,建立单链表时指数高的结点列于指数低的结点之后,即线性表的元素按指数递增有序排列。 例如构造两个多项式ha: 5X3+4X2+3X+2 hb: X2+X+1 多项式加法:定义指针p,q分别指向ha,hb i.p-exp==q-exp ,r-coef=p-coef+q-coef,pa,pb下移; ii.p-expq-exp ,r-coef=q-coef;r-exp=q-exp;,q下移 iii.pa-exppb-exp, r-exp=p-exp;r-coef=p-coef;,p下移 iv.p!=NULL,pb==NULL.相当于iii. V.q==NULL,pb!=NULL.相当于ii. 其流程图如下: 多项式乘法:定义指针fp,gp分别指向f,g 1.将两多项式最大指数相加并赋于maxp,并置g 2.用for循环求指数等于maxp时相乘的系数 3. (fp!=NULL)(gp!=NULL), p=fp-exp+gp-exp 1.pmaxp, fp=fp-next; 2. pmaxp, gp=gp-next; 3.p=maxp, x+=fp-coef*gp-coef; fp=fp-next;gp=gp-next; 调试过程 将主函数中的多项式相乘的函数hd=polymult(ha,hb);/*ha和hb相乘*/的polymult(ha,hb)改为polymulti(ha,hb)即可。 实验结果 1.分别输入两个多项式: 5X3+4X2+3X+2 和X2+X+1,然后输出结果如下: 2.分别输入两个多项式:6X4+4X2+2和5X+6,然后输出结果如下: 总结 此次上机实验应用了线性表实现了一次实际操作,完成了一个一元多项式的简单计算器,不仅对此次编译程序的算法思想有了新的认识,还让我深刻的体会到了线性表的重要性以及其应用的方便,并且对指针加深了映象,应用了书本中的算法思想,对我以后的编译以及完成新的程序有很大的帮助。 附录: 1.建立多项式列表代码如下: mulpoly *creatpoly()/*建立多项式列表*/ {mulpoly *head,*r,*s;/*设中间变量*/ int m,n; head=(mulpoly *)malloc(sizeof(mulpoly));/*头结点申请空间*/ printf(\ninput coef and exp:\n); scanf(%d%d,n,m);/*输入多项式系数和指数*/ r=head;/*尾指针指向头指针*/ while(n!=0

文档评论(0)

1亿VIP精品文档

相关文档