ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:33.98KB ,
资源ID:9170392      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9170392.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(线性链表的的应用.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

线性链表的的应用.docx

1、线性链表的的应用计算机科学与工程学院数据结构课程实验报告二专业班级计算机工程01试验地点419学生学号0905080130指导教师蔡琼学生姓名郑凯试验时间日期:2011年4月1日 第六周 星期五 节次 7 8试验名称线性结构综合应用(1)线性链表的的应用试验类别操作性()验证性() 设计性() 综合性() 其它( )实验目的与要求目的:(1)熟练掌握链表结构及有关算法的设计; (2)掌握用链表表示的特定形式的数据结构的方法,并能编写出有关运算的算法。要求:利用线性链表实现。实验内容要点一元多项式求和:把任意给定的两个一元多项式P(X),Q(X)输入计算机,计算它们的和,并输出结果。教师评语 教

2、师签名 年 月 日题目:一元多项式求和一需求分析 本程序中,要求用户输入两个一元多项式,将其分别存入两个线性链表中,待计算机将其求和后,将最后结果存入另一个线性链表中,并输出结果。 根据需求,需构造线性链表存储结构,创建三个空链表,和三个函数,一个为求和函数,一个为输入函数,一个为输出函数。 求和函数中应包括一元多项式中各系数的的比较,相加排序等。 程序的执行过程包括以下几步: 书写头文件 构造线性链表 构造输入一元多项式的函数 构造输出函数 构造求和函数 书写主函数 结束二概要设计为了实现上述操作,应以线性链表为存储结构。1基本操作:typedef struct polynode int c

3、oef; int exp; struct polynode *next; polynode,*PLinklist; PLinklist Create(int n) PLinklist L,p; int i; L = (PLinklist)malloc(sizeof(polynode); L-next = NULL; for(i=n; i0 ;-i) p = (PLinklist)malloc(sizeof(polynode); cout请输入链表中第i个元素的系数和指数n; coutp-coef; coutp-exp; p-next = L-next; L-next = p; return(L

4、);操作结果,构造线性链表,并为其赋值。2 本程序包含三个模块:(1)主程序模块;(2)构造链表及其相关操作函数;(3)PLinklist Attach,PLinklist Add函数,输出题目要求的序列;三、详细设计元素类型和存储结构typedef struct polynode int coef; int exp; struct polynode *next; polynode,*PLinklist;PLinklist Create(int n) PLinklist L,p; int i; L = (PLinklist)malloc(sizeof(polynode); L-next = N

5、ULL; for(i=n; i0 ;-i) p = (PLinklist)malloc(sizeof(polynode); cout请输入链表中第i个元素的系数和指数n; coutp-coef; coutp-exp; p-next = L-next; L-next = p; return(L);每个模块的分析主程序模块void main() int n,m,c; PLinklist A, B, C; coutn; A = Create(n); Print(A,n); coutm; B = Create(m); Print(B,m); C = Add(A,B); c=m+n; Print(C,c

6、);定义变量:链表A的长度 n,链表B的长度 m.构造链表为链表中所有元素赋值调用求和函数PLinklist Attach,PLinklist Add输出结果构造顺序表及其相关操作函数 在解决数据结构的问题时,首先要考虑数据元素之间的关系,数据元素有四类基本结构:集合,线性结构,树形结构,图状结构或网状结构。通过分析数据元素的逻辑关系来为数据元素选择一种合适的存储结构,有顺序存储结构和链式存储结构。学了这门课程后,我们要有能够将问题给出的信息,转化成数据,分解出数据元素,再分析数据元素之间的关系。多项式的每个单项式可用两个数据项(Pi ,Ei)(系数项和指数项)的数据元素表示,若用一个长度为M

7、且每个元素有两个数据项的线性表,便可唯一确定一个多项式。因为要对两个多项式进行运算,所以采用链式存储表示。数据元素就变成由三个数据项组成。线形表的单链表存储结构为:typedef struct polynode /*类型名和函数名*/ int coef; int exp; struct polynode *next; polynode,*PLinklist;PLinklist Create(int n) PLinklist L,p; int i; L = (PLinklist)malloc(sizeof(polynode); /*申请空间*/ L-next = NULL; for(i=n; i

8、0 ;-i) p = (PLinklist)malloc(sizeof(polynode); /*申请空间*/ cout请输入链表中第i个元素的系数和指数n; coutp-coef; coutp-exp; p-next = L-next; L-next = p; return(L); 要对多项式进行操作,必须将表示多项式的数据元素输入到计算机里。这就是建立链表的过程。编写这个函数,须熟悉线形链表的“头指针”,“头结点”等概念和C语言中“动态分配存储空间”等。建立链表的函数,可以用各种方式编写.1定义链表存储结构,包括:其元素,长度。2构造链表3将元素填入构造的链表中PLinklist Atta

9、ch,PLinklist Add函数,输出题目要求的序列PLinklist Attach(int co,int ex,PLinklist o) PLinklist c; c = (PLinklist)malloc(sizeof(polynode); c-coef = co; c-exp = ex; o-next = c; return c; void Print(PLinklist L,int n) int i = 0; PLinklist p = L; while(p-next != NULL) coutcoeftexpnext; PLinklist Add(PLinklist A,PLin

10、klist B) PLinklist C; PLinklist o; PLinklist p = A; PLinklist q = B; int sum; C = (PLinklist)malloc(sizeof(polynode); o=C; while(p != NULL) & (q != NULL) if(p-exp = q-exp) sum = p-coef+q-coef; if(sum != 0) o = Attach(sum,p-exp,o); p = p-next; q = q-next; else if(p-exp exp) o = Attach(q-coef,q-exp,o)

11、; q = q-next; else o = Attach(p-coef,p-exp,o); p = p-next; while(p != NULL) o = Attach(p-coef,p-exp,o); p = p-next; while(q != NULL) o = Attach(q-coef,q-exp,o); q = q-next; o-next = NULL; p = C; C = C-next; return C; 多项式相加 多项式相加就是对链表进行操作。和多项式链表中的结点无需另生成,而应从两个链表中摘取。从首元结点开始,要对两个链表的每个结点进行比较。根据不同的结果,进行不

12、同的操作。主要有三种操作。(假设qa与qb为指向两个链表中当前进行比较的某个结点。)1) p-expexp则应摘取p指针所指结点插入到和多项式链表中。2) p-exp=q-exp 两个指针所指结点的系数项相加3) p-exp=p-exp 则应摘取q指针所指结点插入到和多项式链表中。这个函数用到了线性链表的插入算法,删除算法等。执行后,和多项式链表就会生成。完整的程序源代码#include #include #include #include typedef struct polynode int coef; int exp; struct polynode *next; polynode,*P

13、Linklist;PLinklist Create(int n) PLinklist L,p; int i; L = (PLinklist)malloc(sizeof(polynode); L-next = NULL; for(i=n; i0 ;-i) p = (PLinklist)malloc(sizeof(polynode); cout请输入链表中第i个元素的系数和指数n; coutp-coef; coutp-exp; p-next = L-next; L-next = p; return(L);PLinklist Attach(int co,int ex,PLinklist o) PLi

14、nklist c; c = (PLinklist)malloc(sizeof(polynode); c-coef = co; c-exp = ex; o-next = c; return c; void Print(PLinklist L,int n) int i = 0; PLinklist p = L; while(p-next != NULL) coutcoeftexpnext; PLinklist Add(PLinklist A,PLinklist B) PLinklist C; PLinklist o; PLinklist p = A; PLinklist q = B; int su

15、m; C = (PLinklist)malloc(sizeof(polynode); o=C; while(p != NULL) & (q != NULL) if(p-exp = q-exp) sum = p-coef+q-coef; if(sum != 0) o = Attach(sum,p-exp,o); p = p-next; q = q-next; else if(p-exp exp) o = Attach(q-coef,q-exp,o); q = q-next; else o = Attach(p-coef,p-exp,o); p = p-next; while(p != NULL)

16、 o = Attach(p-coef,p-exp,o); p = p-next; while(q != NULL) o = Attach(q-coef,q-exp,o); q = q-next; o-next = NULL; p = C; C = C-next; return C; void main() int n,m,c; PLinklist A, B, C; coutn; A = Create(n); Print(A,n); coutm; B = Create(m); Print(B,m); C = Add(A,B); c=m+n; Print(C,c);四、调试结果及说明说明本程序的运行环境为 VC6.0。进入演示程序后即显示提示信息: 测试结果五、实验总结在将代码写完后,经调试,发现没有错误。可是运行后发现结果是不知道原因是什么,后来经同学修改后,得到运行结果,可是为什么出现这种情况,我还是不太清楚。编程能力有待提高。六、实验体会 C语言和C+是学习数据结构的基础,要在巩固下这两门课程。对于一个编程员来说,算法与数据结构是很重要的。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1