1、线性表实验报告 闽 江 学 院 电 子 系实 验 报 告学生姓名:班级:学 号:课程:算法与数据结构一、实验题目:线性表的综合应用一、 实验地点:实验楼A210二、 实验目的:1. 掌握线性表的逻辑特征2. 掌握线性表顺序存储结构的特点,熟练掌握顺序表的基本运算3. 熟练掌握线性表的链式存储结构定义及基本操作4. 掌握顺序表和链表的概念,学会对问题进行分析,选择恰当的逻辑结构和物理结构5. 加深对顺序表和链表的理解,培养解决实际问题的编程能力三、 实验内容:实现一元稀疏多项式的表示及基本操作(建立、销毁、输出、加法、减法、乘法等操作)四、 实验环境(使用的软硬件):Visual C+集成开发环
2、境5、实验步骤及操作1启动VC+;2. 新建工程/Win32 Console Application,选择输入位置:输入工程的名称:xianxingbiao;按“确定”按钮,选择“An Empty Project”,再按“完成”按钮,3.新建文件/C+ Source File,选中“添加到工程的复选按钮”,输入文件名“1. cpp”,按“确定”按钮,在显示的代码编辑区内输入如下的参考程序: #include #include #include #define NULL 0 #define MAXSIZE 20 typedef struct float coef; int expn; term,
3、elemType; typedef struct term termsMAXSIZE; int last; SeqList; typedef SeqList polynomial; void printPloyn(polynomial*p); int PloynStatus(polynomial*p) if(p=NULL) return -1; else if(p-last=-1) return 0; else return 1; polynomial*Init_Polynomial() polynomial*P; P=new polynomial; if(P!=NULL) P-last=-1
4、; return P; else return NULL; void Reset_Polynomial(polynomial*p) if(PloynStatus(p)=1) p-last=-1; int Location_Element(polynomial*p,term x) int i=0; if(PloynStatus(p)=-1) return 0; while(ilast & p-termsi.expn!=x.expn) i+; if(ip-last) return 0; else return 1; int Insert_ElementByOrder(polynomial*p,te
5、rm x) int j; if(PloynStatus(p)=-1) return 0; if(p-last=MAXSIZE-1) coutThe polym is full!last; while(p-termsj.expn=0) p-termsj+1=p-termsj; j-; p-termsj+1=x; p-last+; return 1; int CreatePolyn(polynomial*P,int m) float coef; int expn; term x; if(PloynStatus(P)=-1) return 0; if(mMAXSIZE) printf(顺序表溢出n)
6、; return 0; else printf(请依次输入%d对系数和指数.n,m); for(int i=0;iterm2.expn) return; else if(term1.expnterm2.expn) return; else return=; polynomial*addPloyn(polynomial*p1,polynomial*p2) int i,j,k; i=0; j=0; k=0; if(PloynStatus(p1)=-1)|(PloynStatus(p2)=-1) return NULL; polynomial*p3=Init_Polynomial(); while(
7、ilast & jlast) switch(compare(p1-termsi,p2-termsj) case: p3-termsk+=p1-termsi+; p3-last+; break; casetermsk+=p2-termsj+; p3-last+; break; case=: if(p1-termsi.coef+p2-termsj.coef!=0) p3-termsk.coef=p1-termsi.coef+p2-termsj.coef; p3-termsk.expn=p1-termsi.expn; k+; p3-last+; i+; j+; while(ilast) p3-ter
8、msk+=p1-termsi+; p3-last+; return p3; polynomial*subStractPloyn(polynomial*p1,polynomial*p2) int i; i=0; if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1) return NULL; polynomial*p3=Init_Polynomial(); p3-last=p2-last; for(i=0;ilast;i+) p3-termsi.coef=-p2-termsi.coef; p3-termsi.expn=p2-termsi.expn; p3=addP
9、loyn(p1,p3); return p3; polynomial*mulitPloyn(polynomial*p1,polynomial*p2) int i; int j; int k; i=0; if(PloynStatus(p1)!=1)|(PloynStatus(p2)!=1) return NULL; polynomial*p3=Init_Polynomial(); polynomial*p=new polynomial*p2-last+1; for(i=0;ilast;i+) for(k=0;klast;k+) pk=Init_Polynomial(); pk-last=p1-l
10、ast; for(j=0;jlast;j+) pk-termsj.coef=p1-termsj.coef*p2-termsk.coef; pk-termsj.expn=p1-termsj.expn+p2-termsk.expn; p3=addPloyn(p3,pk); return p3; void printPloyn(polynomial*p) int i; for(i=0;ilast;i+) if(p-termsi.coef0 & i0) cout+termsi.coef; else couttermsi.coef; coutxtermsi.expn; coutendl; void me
11、nu() couttt*数据结构综合性实验*endl; couttt*一、多项式的加、减、乘法运算*endl; couttt* 1.多项式创建 *endl; couttt* 2.多项式相加 *endl; couttt* 3.多项式相减 *endl; couttt* 4.多项式相乘 *endl; couttt* 5.清空多项式 *endl; couttt* 0.退出系统 *endl; couttt* 请选择(0-5) *endl; couttt*endl; void main() int sel; polynomial*p1=NULL; polynomial*p2=NULL; polynomia
12、l*p3=NULL; while(1) menu(); coutsel; switch(sel) case 1: p1=Init_Polynomial(); p2=Init_Polynomial(); int m; printf(请输入第一个多项式的项数:n); scanf(%d,&m); CreatePolyn(p1,m); printf(第一个多项式的表达式为p1=); printPloyn(p1); printf(请输入第二个多项式的项数:n); scanf(%d,&m); CreatePolyn(p2,m); printf(第二个多项式的表达式为p2=); printPloyn(p2)
13、; break; case 2: printf(p1+p2=); if(p3=subStractPloyn(p1,p2)!=NULL) printPloyn(p3); break; case 3: printf(np1-p2=); if(p3=subStractPloyn(p1,p2)!=NULL) printPloyn(p3); break; case 4: printf(np1*p2=); if(p3=mulitPloyn(p1,p2)!=NULL) printPloyn(p3); case 5: Reset_Polynomial(p1); Reset_Polynomial(p2); Re
14、set_Polynomial(p3); break; case 0: return; return; 4. 按F7 键,或工具图标进行工程的建立,如有错误,根据错误显示区中的提示,改正错误,重新建立应用程序;5按Ctrl+F5 键,或工具图标进行工程的执行。六、实验结果:(1)(2x+5x8-3.1x11)+(7-5x8+11x9)程序运行结果为:(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)程序运行结果为:(3)(x+x2+x3)+0程序运行结果为:(4) (x+x3)-(-x-x-3)程序运行结果为:五、 实验总结及心得体会: 在“一元多项式的加、减、乘法运算实现”中主要使用了线性表的基本操作,使我更进一步理解线性表的顺序存储和链式存储结构,熟练线性表的插入、删除等基本功能; 我的程序设计思想和代码的编写和调试能力在此次课设期间有所提高。这样一种更贴切实际的课程设计,更能提高我的学习效率,让我真正理解这门课程的知识要点。六、 对本实验过程及方法、手段的改进建议:报告评分:指导教师签字: 批阅日期:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1