v .. . ..
实 验 报 告
课程名称 ____数据结构上机实验__________ 实验项目 ______线性表的应用 ____________ 实验仪器 ________PC机___________________
系 别_____电子信息与通信学院___ 专 业________ ___ 班级/学号______ __
学生姓名 ______ ___________ 实验日期 _______________________ 成 绩 _______________________
指导教师 _______________________
. . . 资 料. .
v .. . ..
实验一. 线性表的应用
1. 实验目的:掌握线性链表的存储、运算及应用。利用链表实现一元多项式计算。 2. 实验内容:
1) 编写函数,实现用链表结构建立多项式; 2) 编写函数,实现多项式的加法运算; 3) 编写函数,实现多项式的显示;
4) 测试:编写主函数,它定义并建立两个多项式,显示两个多项式,然后将它们相加并显示结果。变换测试用的多项式,检查程序的执行结果。 选做内容:修改程序,选择实现以下功能:
5) 多项式求值:编写一个函数,根据给定的x值计算并返回多项式f(x)的值。测试该函数(从终端输入一个x的值,调用该函数并显示返回结果)。
6) 多项式相减:编写一个函数,求两个多项式相减的多项式。
7) 多项式相乘:编写一个函数,求两个多项式的乘积多项式。 3. 算法说明:
1) 多项式的建立、显示和相加算法见讲义。可修改显示
. . . 资 料. .
v .. . ..
函数,使输出的多项式更符合表达规范。
2) 多项式减法:同次项的系数相减(缺项的系数是0)。例如a(x)=-5x2+2x+3,b(x)= -4x3+3x,则a(x)-b(x) =4x3-5x2-x+3。提示:a(x)-b(x) = a(x)+(-b(x))。 3) 多项式乘法:两个多项式的相乘是“系数相乘,指数相加”。算法思想是用一个多项式中的各项分别与另一个多项式相乘,形成多个多项式,再将它们累加在一起。例如,a(x)=-5x2+2x+3,b(x)=-4x3+3x,则a(x)*b(x) = (-4x3)*(-5x2+2x+3)+(3x)*(-5x2+2x+3) =
(20x5-8x4-12x3)
+
(-15x3+6x2+9x)
=
20x5-8x4-27x3+6x2+9x。 4. 实验步骤:
根据实验报告的要求,我对文件夹里的C文件进行了丰富和修改,步骤如下: 链表结构建立多项式: typedef struct polynode { float coef; //系数 int exp; //指数
struct polynode *next; //下一结点指针 } PNode;
编写函数,实现多项式的加法运算;
PNode * PolyAdd (PNode *f1, PNode *f2) //实现加法功
. . . 资 料. .