数据结构_利用线性表链式存储实现一元多项式相加减_课程设计_实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章、课题描述 能够完成两个或多个多项式的输出,并且实现两个多项式的相加和相减,并 且输出结果。 第二章、课题设计目的 了解数据结构与算法的设计方法,独立分析和设计一元多项式加减的程序编 码,通过程序编写掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本 方法和技能,提高综合运用所学的理论知识和方法独立分析和解决问题的能力,通过 这次实践将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理,掌握线 性表的链式存储如何实现一元多项式的加减,通过不断探索程序的算法,不断优化程 序,使得学生的知识掌握更加牢固,实践能力加强,也激发了学生对于数据结构这门 课的兴趣,为以后这门课的深入研究做了准备,这次实践使同学更加深入了解了数据 结构内在的逻辑关系。 第三章、课题设计意义 通过完成此次课题,可以了解各种数据结构内在的逻辑关系,讨论它在计算 机中的存储表示,以及在其上进行各种运算时的算法实现,并对算法的效率和优化进 行简单的分析和讨论,不仅加强了学生对于线性表链式存储的理解,也提高了学生的 思维能力,促进学生的综合应用能力和专业素质的提高,解决了现实生活中复杂繁琐 的计算过程,不仅提高了效率,也增加了正确率,学生对于线性表和指针等知识的理 解更加深入深刻,也灵活运用了理论知识解决了实际问题,活学活用,加强了学生的 实践能力,同时完成作业还需要与同学的讨论,增强了学生的团队合作能力。 第四章、 设计思路 这个程序的关键是多项式的创建和排列,以及相加时相同指数的系数相加。 由于多项式拥有指数和系数,所以可以定义一个包含指数系数的结构体,用单链表存 储多项式的数据,所以结构体包含 next 指针。数据插入时比较两数的指数,按照降序 排列,从表头的 next 开始,直至找到合适的位置,然后开始链表中数值的插入,如果 相等则直接将指数相加,如果大于就将新数据插入到当前指向的前面,否则将新数据 插入到最后。输入完数据后选择计算方式,多项式运算时要循环遍历整个多项式,多 项式的每一组数据都要和另一个多项式整组数据相运算(每一个运算值都存储到新建 的“多项式”链表中) ,直至两个多项式都遍历完结束。
数 据 结 构 课 程 设 计
本课程设计已调试通过,请放心使用。请到:道客巴巴或 豆丁网充值购买 word 版,省打字,直接修改即可,价格较便宜, 在这里百度较贵! 搜索:数据结构_利用线性表链式存储实现一元多项式相加减_ 课程设计_实验报告
设计题目:利用线性表链式存储实现一元多项式相加减
课题名称 院 学 系 号
输入多项式各项的系数 x, 指数 y
输出已输入的多项式

是否输入正确

合并同类项
结束
图表 1
输入输出流程图
6.2.2、构造数据类型 根据上面的解决途径可以对指数,系数及指针进行以下说明:
typedef struct pnode { int exp; float coef; /*指数*/ /*系数*/
利用线性表链式存储实现一元多项式相加减 年级专业 姓 名 成 绩
1、课题设计目的: 了解数据结构与算法的设计方法,独立分析和设计一元多项式 加减的程序编码,通过程序编写掌握软件开发过程的问题分析、系 统设计、程序编码、测试等基本方法和技能,提高综合运用所学的 理论知识和方法独立分析和解决问题的能力,通过这次实践将实际 问题中所涉及的对象在计算机中表示出来并对它们进行处理,掌握 线性表的链式存储如何实现一元多项式的加减。 1、课题设计意义: 课题设计 目的与 通过完成此次课题,可以了解各种数据结构内在的逻辑关系,讨 论它在计算机中的存储表示,以及在其上进行各种运算时的算法实 现,并对算法的效率和优化进行简单的分析和讨论,不仅加强了学 生对于线性表链式存储的理解,也提高了学生的思维能力,促进学 设计意义 生的综合应用能力和专业素质的提高。
5
指导教师: 年 月 日


第一章、课题描述................................................................................................................. 1 第二章、课题设计目的......................................................................................................... 1 第三章、课题设计意义......................................................................................................... 1 第四章、 设计思路............................................................................................................... 1 第五章、 需求分析............................................................................................................... 2 第六章、 概要设计............................................................................................................... 2 6.1、存储结构:............................................................................................................ 2 6.2、基本算法:............................................................................................................ 2 6.2.1、输入输出..................................................................................................... 2 6.2.2、构造数据类型............................................................................................. 3 6.2.3、多项式的加法............................................................................................. 4 6.2.4、多项式的减法............................................................................................. 4 第七章、程序结果及截图..................................................................................................... 4 第八章、算法的时间复杂度及改进..................................................................................... 5 第九章 、总结及心得体会................................................................................................... 5 第十章、附录......................................................................................................................... 6 第十一章、参考文献........................................................................................................... 13
struct pnode *next; }polynode;
3
6.2.3、多项式的加法 (1)功能:将两多项式相加。 (2)数据流入:输入函数。 (3)数据流出:多项式相加后的结果。 (4)程序流程图:多项式的加法流程图如图 2 所示。 (5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。
6.2.4、多项式的减法 (1)功能:将两多项式相减。 (2)数据流入:调用输入函数。 (3)数据流出:多项式相减后的结果。 (4)程序流程图:多项式的减法流程图如图 3 所示。 (5)测试要点:两多项式是否为空,为空则提示重新输入,否则,进行运算。 第七章、程序结果及截图
4
第八章、算法的时间复杂度及改进 1、算法的时间复杂度:一元多项式的加法运算的时间复杂度为 O(m+ n),减法运算的 时间复杂度为 O(m-n),其中 m,n 分别表示二个一元多项式的项数。 2、问题和改进思想:在设计该算法时,出现了一些问题,例如在建立链表时头指针 的设立导致了之后运用到相关的指针时没能很好的移动指针出现了数据重复输出或 是输出系统缺省值,不能实现算法。实现加法时该链表并没有向通常那样通过建立第 三个链表来存放运算结果,而是再度利用了链表之一来进行节点的比较插入删除等操 作。为了使输入数据按指数降序排列,可在数据的输入后先做一个节点的排序函数, 通过对链表排序后再进行之后加减运算 第九章、总结及心得体会 此次上机实验应用了线性表实现了一次实际操作,完成了一个一元多项式的简 单计算器,不仅对此次编译程序的算法思想有了新的认识,还让我深刻的体会到了 线性表的重要性以及其应用的方便,并且对指针加深了印象,应用了书本中的算法 思想,对我以后的编译以及完成新的程序有很大的帮助。 通过这次课程设计练习,使我更深刻地理解了C语言的精髓-----指针的使用。 完成整个程序设计有,对指针掌握的更加熟练。 同时通过直接对链表的操作,加深了对数据结构的理解和认识。并在完成课程 设计的过程主动查阅了相关资料,学到了不少课本上没有的技术知识。 经过这次课程设计,我深刻认识到算法在程序设计中的重要性,一个完整的程
1
第五章、 需求分析 1.界面输出,提示如何输入数据。要求先输入多项式的项数。 2.创建多项式。接收输入的数据,并保存到链表中。 3.显示程序的功能表,允许使用者选择运算类型。 4.显示已经创建好的多项式。 6.实现加法运算。 7.实现减法运算。
9.清除内存内容,销毁创建的链表,退出程序。
第六章、 概要设计 6.1、存储结构:一元多项式的表示在计算机内可以用链表来表示,为了节省存储空 间, 只存储多项式中系数非零项。 链表中的每一个结点存放多项式的一个系数非零项, 它包含三个域,分别存放该项的系数、指数以及指向下一个多项式项结点的指针。创 建一元多项式链表,对一元多项ห้องสมุดไป่ตู้的运算中会出现的各种可能情况进行分析,实现一 元多项式的加减。 6.2、基本算法:
6.2.1、输入输出 (1)功能:将要进行运算的多项式输入输出。 (2)数据流入:要输入的多项式的系数与指数。 (3)数据流出:合并同类项后的多项式。 (4)程序流程图:多项式输入流程图如图 1 所示。
(5)测试要点:输入的多项式是否正确,若输入错误则重新输入。否则进行运算。
2
开始 申请结点空间 +++++++++++++ 输入多项式的项数
相关文档
最新文档