- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法与数据结构实验1
福建农林大学实验报告
系(教研室): 计算机 专业: 年级: 实验课程:
姓名: 学号: 实验室号:_ 计算机号:
实验时间: 指导教师签字: 成绩:
实验一:完成一元多项式的相加相乘运算(验证性、4学时)
实验目的和要求
完成多项式的相加、相乘运算。
(1)掌握线性表的插入、删除、查找等基本操作设计与实现
(2)学习利用线性表提供的接口去求解实际问题
(3)熟悉线性表的的存储方法
实验内容和原理
1.实验内容
设计一个一元多项式的简单计算程序,其基本功能有:(1)输入并建立多项式;(2)输出多项式;(3)多项式的相加相乘运算。利用单链表实现。
2.实验原理
使用单链表实现一元多项式的存储,并实现两个一元多项式的加法乘法运算。
实验环境
硬件:(1)学生用微机(2)多媒体教室或远程教学(3)局域网环境
软件:(1)Windows XP中文操作系统 (2)Turbo C 3.0或者VC6.0
算法描述及实验步骤
1、描述
1.定义创建链表的函数,然后创建链表,用于存放结果。
2.定义多项式相加的函数实现多项式的相加功能。
3.定义打印链表和释放链表的函数。
4.最后在主函数里面调用这些函数,实现多项式的相加相乘。
例:(1)A(X)= 9x+3X2 B(X)= 2X2 (2)A(X)= 2x +6X2+6X3 B(X)= 2X2
(1)执行加法操作,输出“相加后的结果为9x+5X2”
执行乘法操作,输出“相加后的结果为18X3+6X4”
(2)执行加法操作,输出“相加后的结果为2x+8X2+6X3”
执行乘法操作,输出“相加后的结果为4X3+12X4+12X5”
2、算法流程图
3、代码(注释)
#includeiostream
#includemalloc.h
using namespace std;
struct Node
{ float coef;//结点类型
int exp; };
typedef Node polynomial;
struct LNode
{ polynomial data;//链表类型
LNode *next; };
typedef LNode* Link;
void CreateLink(Link L,int n);
void PrintList(Link L);
void PolyAdd(Link pc,Link pa,Link pb);
void CopyLink(Link pc,Link pa);
void PolyMultiply(Link pc,Link pa,Link pb);
int JudgeIfExpSame(Link pa,Link e);
void DestroyLink(Link L);
int CompareIfNum(int i);
void DestroyLink(Link L)
{ Link p; p=L-next;
while(p)
{ L-next=p-next; delete p; p=L-next; }
delete L; L=NULL; }
//创建含有n个链表类型结点的项,即创建一个n项多项式
void CreateLink(Link L,int n)
{ if(L!=NULL)
{ DestroyLink(L); }
Link p,newp;
L=new LNode; L-next=NULL;
(L-data).exp=-1;//创建头结点
p=L;
for(int i=1;i=n;i++)
{ newp=new LNode;
cout请输入第i项的系数和指数:endl;
cout系数:;
cin(newp-data).coef;
cout指数:;
cin(newp-data).exp;
if(newp-data.exp0)
{ cout您输入有误,指数不允许为负值!endl;
delete newp; i--; continue; }
newp-next=NULL;
p=L;
if(newp-data.coef==0)
{ cout系数为零,重新输入!endl;
delete newp; i--; contin
文档评论(0)