实验报告封皮
1. 实验目的:掌握线性链表的存储、运算及应用。利用链表实现一元多项式
计算。
2. 实验内容:
1)
2)
3)
4) 编写函数,实现用链表结构建立多项式; 编写函数,实现多项式的加法运算; 编写函数,实现多项式的显示; 测试:编写主函数,它定义并建立两个多项式,显示两个多项式,然
后将它们相加并显示结果。变换测试用的多项式,检查程序的执行结
果。
选做内容:修改程序,选择实现以下功能:
5) 多项式求值:编写一个函数,根据给定的x值计算并返回多项式f(x)
的值。测试该函数(从终端输入一个x的值,调用该函数并显示返回
结果)。
6) 多项式相减:编写一个函数,求两个多项式相减的多项式。
7) 多项式相乘:编写一个函数,求两个多项式的乘积多项式。
3. 算法说明:
1) 多项式的建立、显示和相加算法见讲义。可修改显示函数,使输出的
多项式更符合表达规范。
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) 多项式乘法:两个多项式的相乘是“系数相乘,指数相加”。算法思想
是用一个多项式中的各项分别与另一个多项式相乘,形成多个多项式,
2再将它们累加在一起。例如,a(x)=-5x+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. 程序清单:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct polynode
{ float coef; //系数
int exp; //指数
struct polynode *next; //下一个结点指针
} PNode;
void PrintPoly(PNode *h) //输出多项式。修改此算法,使输出形式更符合自然表达规 范
{
PNode *p=h->next;