- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机科学与工程学院
《算法与数据结构》实验报告(二)
专业班级 2013级计算机工程专业02班 实验地点 403机房 学生学号 1305120617 指导教师 蔡琼 学生姓名 魏伟 实验时间 2015-04-11 实验项目 链表的应用 实验类别 基础性(√) 设计性() 综合性() 其它( ) 实验目的及要求
(1)熟练掌握链表结构及有关算法的设计;
()掌握用链表表示特定形式的数据的方法,并能编写出有关运算的算法 日 期: 2015 年 4 月 18 日 实 验 内 容 一、实验内容:一元多项式求和。
把任意给定的两个一元多项式P(x)?,Q(x)?输入计算机,计算它们的和并输出计算结果。实验说明:
一元多项式可以用单链表表示,结点结构图示如下:
一元多项式算法伪代码如下:
实 验 内 容 三、预期结果
a=3x^4+2x^3-5x^2+x
b=7x^4-5x^3+3x^2+x
输出为c=10x^4-3x^3-2x^2+2x
四程序代码
#includestdio.h
#includestdlib.h
typedef struct LNode
{
int x,z;
struct LNode *next;
}LinkList;
void OutXLinkList(LinkList *L);
void OutZLinkList(LinkList *L);
void main()
{
int n,m;
LinkList *a,*b,*c;
printf(请输入一元多项式a的项数m:);
scanf(%d,m);
printf(请按照从低次到高次的顺序依此输入一元多项式a的系数和指数:\n);
PutLinkList(a,m);
printf(a=);
OutLinkList(a);
printf(请输入一元多项式b的项数n:);
scanf(%d,n);
printf(请按照从低次到高次的顺序依此输入一元多项式b的系数和指数:\n);
PutLinkList(b,n);
printf(b=);
OutLinkList(b);
c=AddLinkList(a,b);
printf(两个多项式的和为:\na+b=);
OutLinkList(c);
}
void PutLinkList(LinkList *L,int n)
{
LinkList *s,*r;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(int i=0;in;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
printf(请输入第%d项的系数:,i+1);
scanf(%d,s-x);
printf(请输入第%d项的指数:,i+1);
scanf(%d,s-z);
r-next=s;
r=s;
}
r-next=NULL;
}
/*多项式输出函数*/
void OutLinkList(LinkList *L)
{
char FuHao;
LinkList *p=L-next;
FuHao=p-x0? +:-;
if(FuHao==-)
{
printf(%c,FuHao);
if(p-x==-1)
printf(1);
}
OutXLinkList(p);
OutZLinkList(p);
p=p-next;
while(p!=NULL)
{
FuHao=p-x0? +:-;
printf(%c,FuHao);
OutXLinkList(p);
OutZLinkList(p);
p=p-next;
}
printf(\n);
}
/*输出系数函数*/
void OutXLinkList(LinkList *L)
{
int xi=L-x0? L-x:-L-x;
if(L-x==1||L-x==-1);
else
printf(%d,xi);
}
/*输出指数函数*/
void OutZLinkList(LinkList *L)
{
if(L-z==0)
;
else if(L-z==1||L-z==-1)
{
if(L-z0)
{
if(L-x==1||L-x==-1)
printf(1);
prin
文档评论(0)