学生姓名 班 级 实验名称 实 验 概 述 曹晓鑫 学 号 指导老师 实验成绩 实验报告 1915001215086 实验2 线性表 实验目的及要求: 掌握线性表的基本操作如线性表的初始化、查找、插入、删除等,以及线性表的存储结构的运用,并利用线性表实现一元多项式的相加。 实 验 内 容 实验设计思路、步骤和方法等: 通过对线性表的基本操作,对线性表进行初始化,用带表头结点的有序链表表示多项式,通过一系列线性表的基本操作实现一元多项式相加。设p,q分别指向A,B中某一结点,p,q初值是第一结点,比较p->exp与q->exp,p->exp < q->exp: p结点是结果多项式中的一项,p后移,q不动;p->exp > q->exp: q结点是结果多项式中的一项,将q插在p之前,q后移,p不动;p->exp = q->exp:系数相加,直到p或q为NULL。 typedef OrderedLinkList polynomial; // 用带表头结点的有序链表表示多项式 结点的数据元素类型定义为: typedef struct polynomialnode { // 项的表示 float coef; // 系数 int expn; // 指数 struct polynomialnode *next; } polynomialnode, *polynomial ; void addpolyn (polynomial &la, polynomial &lb){ pa=la->next;pb=lb->next;pc=la;//pa,pb分别指向la,lb的第一个结点 while (pa&&pb) {a=pa->expn;b=pb->expn; switch(*cmp(a,b)){ //a,b分别为pa,pb所指结点的指数 case -1:pc=pa;pa=pa->next; break; //acoef+pb->coef; if (sum<>0){pa->coef=sum;pc=pa;} else{pc->next=pa->next;free(pa);} pa=pc->next;u=pb;pb=pb->next;free(u); break;} //a=b case 1: {u=pb->next;pb->next=pa;pc->next=pb; pc=pb;pb=u; break;} //a>b } //switch}//while if(pb) {pc->next=pb; } free(lb); } 实验结果: 实 验 小 结 实验的心得体会: 一元多项式的相加运用的是有序链表来实现其功能的,在编程过程中,抽象数据类型Polynomial的实现是重要的一部分,用去很长时间。编程最重要的是运行程序和调试程序的过程。编写程序时要特别注意数据类型的定义。 指导教师 日期 指 导 教 师 评 语 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo3.cn 版权所有 湘ICP备2023017654号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务