当前位置:文档之家› 多项式求和

多项式求和

for(i=0;i<=h->last;i++)
h->data[i]=f.data[i]+g.data[i];
}
void main()
{ SeqList f,g,h;
printf("创建的多项式f(x):\n");
printf("\n");
create_list(&f);
printf("f(x)=");
首先分析实验内容,要实现多项式求和,必须创建三个函数,一个是创建多项式的函数,一个是显示多项式的函数,最后面一个是两个多项式求和的函数。然后在主函数中两次调用函数,最后调用求和函数,实现求和功能。
源代码
#include<stdio.h>
#define MAXLEN 100
typedef struct
for(i=n;i>=0;i--)
{printf("输入X^%d项的系数: ",i);
scanf("%d",&D->data[i]);
}
D->last=n;
}
//两个多项式求和
void add_List(SeqList f, SeqList g, SeqList *h)
{ int i;
h->last=st>st? st:st;
电子信息学院
实验报告书
课程名:数据结构
题目:多项式求和
实验类别设计
班级:BX1001
学号:**************Βιβλιοθήκη **2011年09月25日
1.实验题目
(1)掌握线性表的顺序存储结构和链式存储结构;
(2)掌握线性表插入、删除等基本运算;
(3)掌握线性表的典型应用——多项式求和。
2 .实验内容
顺序存储结构的实现。
show_list(f);
printf("创建的多项式g(x):\n");
printf("\n");
create_list(&g);
printf("g(x)=");
show_list(g);
printf("多项式f(x)和g(x)的和 ");
add_List (f,g,&h);
printf("h(x)=");
}
//创建的多项式
void create_list(SeqList *D)
{ int n,i;
printf("请输入多项式X的最高次数:");
scanf("%d",&n);
for(int k=99;k>=0;k--)
D->data[k]=0;
printf("请按多项式X的次数由大到小输入系数,缺少项用0补齐\n");
show_list(h);
}
5.测试数据与实验结果(可以抓图粘贴)
6.结果分析与实验体会
程序成功运行,实验成功。我觉得我刚刚看到题目,第一反应是好难啊。但经过思考后,根据题目的提示,定义了顺序表数据结构类型,在三个函数中,我首先构建的是创建多项式的函数。这个函数其实不难,主要用到的就是循环结构,还有把系数赋给D->data[i]变量。在下面一个显示函数中也是通过循环体来显示一个个多项式中的各项,从st开始依次输出。在最后一个求和函数中就是把前面所创建的两个函数通过条件表达式来实现系数相加。还有一点非常重要,就是在多项式中系数缺少项补0,开始我很苦恼,没有那一项不知道怎么去除。相比前面的函数,主函数就显得繁琐了,一次次的调用函数,一次次用printf()函数输出。但不断修改后,界面就更加完美了。在整个实验中,我觉得我对循环结构的应用更加熟练了,也能轻易的调用数据实现简单的加减法,收获很大。
例如,已知:f(x)=8x^6+5x^5-10x^4+32x^2-x+10,g(x)=7x^5+10x^4-20x^3-10x^2+x,
求和结果:f(x)+g(x)=8x^6+12x^5-20x^3+22x^2+10。
顺序表类型定义如下:
#define MAXLEN 100
typedef struct
{ int data[MAXLEN];
int last;
} SeqList;
3.实验要求
(1)利用C(或C++)语言完成算法设计和程序设计。
(2)上机调试通过实验程序。
(3)输入数据,检验程序运行结果。
(4)给出具体的算法分析,包括时间复杂度和空间复杂度。
(5)撰写实验报告。
4.实验步骤与源程序
实验步骤
{ int data[MAXLEN];
int last;
} SeqList;
//显示多项式
void show_list(SeqList h)
{
for(int i=st;i>=1;i--)
if(h.data[i])
printf("\(%dx^%d\)+",h.data[i],i);
printf("\(%dx^%d\)\n",h.data[0],0);
相关主题