文档详情

算法与数据结构实验1.doc

发布:2018-02-16约7.9千字共8页下载文档
文本预览下载声明
福建农林大学实验报告 系(教研室): 计算机 专业: 年级: 实验课程: 姓名: 学号: 实验室号:_ 计算机号: 实验时间: 指导教师签字: 成绩: 实验一:完成一元多项式的相加相乘运算(验证性、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
显示全部
相似文档