数据结构实验---线性排列剖析
深 圳 大 学 实 验 报 告
课程名称: 数据结构
实验项目名称: 线性排列
学院: 信息工程学院
专业: 电子信息工程
指导教师:
报告人: 学号:20091000000 班级: 电子1班
实验时间: 2011 年9月 29日
实验报告提交时间: 2011-10-15
教务处制
一、实验目的与要求:
实验目的:通过运用链表知识,编程实现多项式之间的运算,从而加深对链表概念的理解,提高链表编程的应用技巧。
实验要求:1、运行多项式例程,输入参数进行操作,对运行结果进行分析,并做详细说明 2、阅读多项式例程中的函数Polyn_Print和Polyn_ADD的代码,对两个函数的功能、参数、具体每行代码进行分析说明 3、参考例程,编写新函数Polyn_SUB,实现两个多项式相减的功能,并对新增功能进行测试,对运行结果进行说明。 二、方法、步骤:(说明程序相关的算法原理或知识内容,程序设计的思路和方法,可以用流程图表述,程序主要数据结构的设计、主要函数之间的调用关系等)
1、这是一个线性排列的实验,这次的实验室利用线性链表的基本操作来实验多项式的相加的。
2、对于一元多项式的相加,它的算法原理基本如下:对于所有指数相同的项,对应系数相加,若和不为零,则构成“和多项式”中的一项;对于指数不相同的项,则分别安指数的顺序复抄到“和多项式”中去。同样,多项式的减法也是基于同样的原理,可以这样理解,减去另一个指数可等于加上这个指数的相反数。
3、基于以上的算法原理,则可以运用线性链表的特性实现这一功能。如指针qa和qb分别指向多项式A,B中当前比较结点,分为3种情况,即:
(1)qa所指结点指数值 qb所指结点指数值,应摘取qa所指结点插入“和多项式”链表中。这里用到链表的插入等函数。
(2)qa所指结点指数值 qb所指结点指数值,应摘取qb所指结点插入“和多项式”链表中。这里用到链表的插入等函数。
(3)qa所指结点指数值 = qb所指结点指数值,将两个结点中系数相加若不为零,则修改qa所指结点系数,同时释放qb结点,反之,从多项式A中删除相应结点,并释放qa,qb所指结点。这里用到链表的删除等函数。
4、多项式的减法的算法可基于加法的算法,即加上另个数的相反数。
三.实验过程及内容:(对程序代码进行说明和分析,越详细越好,代码排版要整齐,可读性要高)
1、验证多项式相加程序代码,其中对多项式例程中的函数Polyn_Print和Polyn_ADD的代码,对两个函数的功能、参数、具体每行代码进行分析说明。
(1)函数Polyn_ADD
(2)函数Polyn_Print
2、编写新函数Polyn_SUB,实现两个多项式相减的功能,并对新增功能进行测试,对运行结果进行说明。
修改之后的代码段:
void Polyn_SUB(PLink Pa, PLink Pb) {
// 多项式加法:Pa = Pa-Pb,最终结果修改Pa得到,Pb不做修改
PLink ha, qa, qb; //定义指针 ha, qa, qb
int itemp; //作为中间系数的变量
ha = Pa; //ha指向Pa的头结点
qa = Pa-next; //qa,qb分别指向Pa,Pb中当前结点
qb = Pb-next;
while (qa qb) { //qa和qb均非空
switch (cmp(qa-expn, qb-expn)) {
case -1: //Pa的指数比Pb小
ha = qa; //ha是qa的前驱
qa = qa-next; //指向下一个结点
break;
case 0: // 两者的指数值相等
itemp = qa-coef - qb-coef; //qa的系数减去qb的系数
if
您可能关注的文档
最近下载
- 2025《麻江县蓝莓产业发展现状调研分析报告》4900字.docx
- 2026年国网安全管理方案.docx VIP
- 2025年北京师范大学学科教学培养方案 .pdf VIP
- 初级消防试题及答案大全.docx VIP
- 核医学教学课件:血液和淋巴显像.ppt VIP
- 重庆市各地方周氏支族源流(1-170支族).doc VIP
- 建筑工程质量管理体系流程图.docx
- 淋巴系统核医学检查课件.ppt VIP
- (高清版)B-T 6003.1-2022 试验筛 技术要求和检验 第1部分:金属丝编织网试验筛.pdf VIP
- (已压缩)TUCST007-2020房屋建筑与市政基础设施工程施工安全风险评估技术标准.docx VIP
原创力文档

文档评论(0)