数据结构课程

上传人:枫** 文档编号:558399680 上传时间:2022-11-25 格式:DOCX 页数:22 大小:120.32KB
返回 下载 相关 举报
数据结构课程_第1页
第1页 / 共22页
数据结构课程_第2页
第2页 / 共22页
数据结构课程_第3页
第3页 / 共22页
数据结构课程_第4页
第4页 / 共22页
数据结构课程_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数据结构课程》由会员分享,可在线阅读,更多相关《数据结构课程(22页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计报告1EAST CHINA INSTITUTE OF TEGHNOLTOY课程设计报告课程设计题目:链表的创建、插入、删除、修改学生姓名专 业计算机科学与技术学 号指导教师艾2011年 9月 30日一、实验题目:实现链表的创建、插入、删除和修改任务:实现链表的创建、插入、删除、修改和输出要求:建立一个简单的人机对话,创 建、插入、删除、修改和输出功能 可以根据需要选择使用。二、实验时间、地点:2011-12-262011-12-30 信工楼 302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实 际问题,侧重对链表、数组、字符串、图、树等相关内容的综

2、合应用,使同学 们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程 调试能力,为后续专业课程的学习打下良好的基础。四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常用算法中的应用。5. 独立完成;6. 每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人 独立完成一题),不得以任何理由选择其他的题目,当然在完成自己的题目 之后根据个人兴趣可以继续选做其他的题目;7课程设计完成后严格按照报告格式撰写课程设计报告,并

3、于结束后的第三天 上交到学习委员统一交给老师;8 课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连 续的,也可以是不连续的)存放数据元素。链表中每一个元素成为结点”每一个结点都是由数据域和指针域组成 的,每个结点中的指针域指向下一个结点。Head是 头指针”表示链表的开始, 用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址

4、。实际上,链表中的每个结点可以用若干个数据和若干个指针。结点中只 有一个指针的链表称为单链表,这是最简单的链表结构。再C+中实现一个单链表结构比较简单。例如,可定义单链表结构的最简单形式如下class link public:elemtype data;link *n ext;这里用到了结构体类型。其中,*next是指针域,用来指向该结点的下一 个结点;Data是一个整形变量,用来存放结点中的数据。当然,Data可以是任何数据类型,包括结构体类型或类类型。在此基础上,我们在定义一个链表类list,其中包含链表结点的插入,删 除,输出等功能的成员函数。void print(link*head)

5、;/ 链表结点的输出lin k*Locate(li nk*head,elemtype x); 链表的的查询void insert(link*head,elemtype x,elemtype y); 链表结点的插入void deletel(link*head,elemtype x); 链表结点的删除v oid change(link*p,elemtype x,elemtype y); 链表的修改由于链表中的各个结点是由指针链接在一起的,其存储单元文笔是连续的, 因此,对其中任意结点的地址无法向数组一样,用一个简单的公式计算出来, 进行随机访问。只能从链表的头指针(即head)开始,用一个指针p先

6、指向第-# -一个结点,然后根据结点p找到下一个结点。以此类推,直至找到所要访问的 结点或到最后一个结点(指针为空)为止。流程图:Public:NYq- next二p- ncout 插入YN主函数流程图Act=N34 567GotoloopBreakCaCase清屏,gotoCase7case7:system(CLS六、实现过程#in clude#in cludevwi ndows.h#in clude#defi ne elemtype intclass linkpublic:elemtype data;link *n ex t;class lin klistprotected:lin k*h

7、ead;public:lin k*rcreat()li nk*s,*p,*r;elemtype i;cout i;p=r =new link;p- next=NULL;while(i)s=new link; s-data=i;r-n ext=s;r=s;cin i;r-n ext=NULL; return p;void prin t(l in k*head)lin k*p;p=head-n ex t;while(p- next!=NULL)coutdata; p=p-n ex t;coutdata;coute ndl;lin k*Locate(link*head,i nt x) lin k*p

8、;p=head;int j=0;while(p!=NULL)&(jn ext;j+;return p;void deletel(li nk*head,elemtype x)li nk*p,*q;q=head;p=head-n ex t;while(p!=NULL)&(p-data!=x)q=p;p=p-n ex t;if(p=NULL)coutn ext=p-n ex t;delete(p);void in sert(li nk*head,i nt x,elemtype y)li nk*p,*s;s=new link; s-data=y;if(head- next=NULL)head-n ex

9、t=s;s-n ext=NULL; p=Locate(head,x); if(p=NULL)coutn ext=p-next;p-n ext=s;void cha nge(li nk*p,elemtype x,elemtype y) lin k*q;q=p-n ex t;while(q!=NULL)if(q-data=x)q-data=y;q=q-n ex t;int coun t(l in k*h)lin k*p;i nt n=0;p=h-n ex t;while(p!=NULL)n+;p=p-n ext;return n;void mai n()int n ,act;char m;elem

10、type x,y;lin k*p,*q; lin klist a;p=a.rcreat();a.pri nt(p);Ioop1:cout m;if(m=e)根据提示选择操作act=1;if(m=f)act=2;if(m=g)act=3;if(m=h)act=4;if(m=i)act=5;if(m=q)act=6;if(m=c)act=7;switch(act)case 1:cout x;q=a.Locate(p,x);if(q=NULL)coutx 不在表中。找不到! e ndl;else coutx在表中,已找到! endl;goto loop1;break;case 2: couty;a.

11、deletel(p,y);a.pri nt(p);goto loop1;break;case 3:cout x;couty;a.i nsert(p,x,y);a.pri nt(p);goto loopl;break;case 4:cout xy;a.cha nge(p,x,y);a.pri nt(p);goto loop1;break;case 5:n=a.co un t(p);cout链表中结点个数为:nendl;goto loop1;break;case 6:system(CLS); / 清屏goto loop2;break;case 7:system(CLS); / 清屏a.pri nt

12、(p);goto loopl;break;loop2:;七、实验总结(分析程序的得与失)1、经过运行本程序能够进行链表的创建、 插入、删除、修改、统计等功能,已具备链表试 验的功能,基本达到了题目的要求。2、在编写程序的过程中,对字符的判断做 标记,用switch语句选择运用,使结构更加清 晰,能够用goto语句进行循环。使程序的可执 行性更强。3、本程序还是有一定缺陷,比如运行界面 不够美观、但基本达到了人机交互的功能达到要 求4、对本程序自我感觉人机交互做的比较 好,能够做到根据选择进行操作,主要依靠循环 进行实现,同时我也加入了清屏功能,使操作更 加人性化。5、本程序的但还是比较单一,功能不是很 完善,可以对界面进行设计,是其更加美观。八、心得体会课程设计是培养学生综合运用所学知识

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号