- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构 实验 多项式求和
实验目的
掌握线性表的顺序存储结构和链式存储结构;
掌握线性表插入、删除等基本运算;
掌握线性表的典型运用——多项式求和。
实验内容
编程实现多项式的求和运算:
顺序存储结构的实现
例如,已知: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;
链式存储结构的实现
例如,已知:f(x)=100x^100+5x^50-30x^10 +10,g(x)=150x^90-5x^50+40x^20-20x^10+3x,
求和结果:f(x)+g(x)= 100x^100+150x^90+40x^20-10x^10+3x+10。
实验要求
利用C(C++)语言完成程序设计。
上机调试通过实验程序。
输入数据,检验程序运行结果。
给出具体的算法分析,包括时间复杂度和空间复杂度等。
撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。
实验步骤与源程序
⑴ 实验步骤
我先从具体的问题中抽象出适当的数学模型,然后设计出相应的算法,对于用顺序存储结构实现多项式求和而言,需要设计3个main函数调用的子函数,分别实现创建多项式,多项式相加和显示多项式;对于用链式存储结构实现多项式求和,也同样需要3个这样的子函数,最后,编写程序,并调试程序,得出实验结果。
⑵ 源代码
顺序存储结构:
#includestdio.h
#define MAXLEN 100
typedef struct
{ int data[MAXLEN];
int last;
} SeqList;
void add_List(SeqList A, SeqList B, SeqList *C)
{ int i;
C-last=A.lastB.last? A.last:B.last;
for(i=0;i=C-last;i++)
C-data[i]=A.data[i]+B.data[i];
}
void show_list(SeqList C)
{ int i;
for(i=C.last;i=1;i--)
if(C.data[i])
printf(\(%dx^%d\)+,C.data[i],i);
printf(\(%dx^%d\)\n,C.data[0],0);
}
void create_list(SeqList *D)
{ int n,i;
printf(\t\t请输入多项式X的最高次数:);
scanf(%d,n);
for(int k=99;k=0;k--)
D-data[k]=0;
printf(\t\t请输入多项式X的次数由大到小输入系数,缺少项用0补齐\n);
for(i=n;i=0;i--)
{ printf(\t\t输入X^%d项的系数: ,i);
scanf(%d,D-data[i]);
}
D-last=n;
}
void main()
{ SeqList A,B,C;
printf(\t\t创建多项式f(x):\n);
create_list(A);
printf(\t\tf(x)=);
show_list(A);
printf(\t\t创建多项式g(x):\n);
create_list(B);
printf(\t\tg(x)=);
show_list(B);
printf(\t\t多项式f(x)和g(x)的和: );
add_List (A,B,C);
printf(\n\t\tf(x)+g(x)=);
show_list(C);
}
链式存储结构:
#includestdio.h
#includemalloc.h
#includemath.h
typedef struct linknode
{
float coef;
int expn;
struct linknode *next;
} Node;
void create_link_list(Node *L)
{ Node *p,*q;
int n=1;
float x=1;
文档评论(0)