1、 课程设计报告课程设计报告 课程设计题目:链表的创建、插入、删除、修改课程设计题目:链表的创建、插入、删除、修改 学学生姓名生姓名 专专 业业 信息工程信息工程 班班 级级 学学 号号 指导教师指导教师 2013 年年 1 月月 9 日日 - 1 - 一、一、实验题目实验题目: 实现链表的创建、插入、删除和修改 任务:实现链表的创建、插入、删除、修改和输出 要求:建立一个简单的人机对话,创建、插入、删除、修改和输出功能 可以根据需要选择使用。 二、二、实验时间、地点实验时间、地点: 2011-12-26 2011-12-30、信工楼 302 三、三、实验目的实验目的 本次课程设计的主要目的是综
2、合运用所学的数据结构知识解决一个比较实 际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们 能进一步熟悉掌握数据结构的基础知识, 进一步提升自己的解决问题和编程调试 能力,为后续专业课程的学习打下良好的基础。 四、四、实验要求实验要求 1. 了解数据结构及其分类、数据结构与算法的密切关系; 2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构; 3. 掌握设计算法的步骤和分析方法; 4. 掌握数据结构在排序和查找等常用算法中的应用。 5. 独立完成; 6 每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独 立完成一题) ,不得以任何理由选择其他
3、的题目,当然在完成自己的题目之 后根据个人兴趣可以继续选做其他的题目; 7课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天 上交到学习委员统一交给老师; 8课程设计的成绩由两部分组成:程序检查成绩(40,每个功能占程序分的 20%)报告检查成绩(40)平时考核(20%) 五、五、实现思路实现思路 链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连 续的,也可以是不连续的)存放数据元素。 链表中每一个元素成为“结点”, 每一个结点都是由数据域和指针域组成的, 每个结点中的指针域指向下一个结点。Head 是“头指针”,表示链表的开始,用 来指向第一个结点,而最后一个
4、指针的指针域为 NULL(空地址),表示链表的结 束。 可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变 - 2 - 量,用来存放下一个结点的地址。 实际上,链表中的每个结点可以用若干个数据和若干个指针。结点中只有 一个指针的链表称为单链表,这是最简单的链表结构。 再 c+中实现一个单链表结构比较简单。例如,可定义单链表结构的最简单形式 如下 class link public: elemtype data; link *next; ; 这里用到了结构体类型。其中,*next 是指针域,用来指向该结点的下一 个结点;Data 是一个整形变量,用来存放结点中的数据。当然,Da
5、ta 可以是任 何数据类型,包括结构体类型或类类型。 在此基础上,我们在定义一个链表类 list,其中包含链表结点的插入,删 除,输出等功能的成员函数。 void print(link*head) ;/链表结点的输出 link*Locate(link*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);/链表的修改 由
6、于链表中的各个结点是由指针链接在一起的,其存储单元文笔是连续的, 因此,对其中任意结点的地址无法向数组一样,用一个简单的公式计算出来,进 行随机访问。只能从链表的头指针(即 head)开始,用一个指针 p 先指向第一 个结点,然后根据结点 p 找到下一个结点。以此类推,直至找到所要访问的结点 或到最后一个结点(指针为空)为止。 流程图:流程图: - 3 - Public: N Y N Y Public Protected: link*s,*p,*r i s=new link r-next=NUL return p link*p p-next!=NULL coutnext delete(p) L ink*p,*s head-next= head-next=s p=Locate(head,x) s-next=p-next p=NULL coutdata=y q=q-next link*q Int n,act Act=1 M=f M=e Act=2 - 6 - 6 7 N Y . .