1、 信息科学与技术学院信息科学与技术学院 数据结构课程设计报告数据结构课程设计报告 题目名称: 循环单链表循环单链表( (附加头结点, 引用附加头结点, 引用) ) 专业班级: 计算机科学与技术 2011 级 1 班 学生姓名: 学生学号: 指导教师: 目目 录录 1 课程设计的目的 1 1.1 课程设计的目的 1 1.2 课程设计的题目 1 1.3 题目要求 1 2 概要设计 1 2.1 存储结构 1 2.2 基本操作 1 3 详细设计 2 3.1 流程图 2 3.2 源程序 7 4 测试 . 12 5 课程设计总结 . 19 6 参考书目: . 20 1 1 课程设计的目的课程设计的目的 1
2、.1 课程设计的目的课程设计的目的 更好的掌握数据结构这门课程,会用数据结构的基本思想及算法解决实际问题。 更好的掌握循环链表,能进行各种基本的操作,提高编程能力。 1.2 课程设计的题目课程设计的题目 循环单链表(附加头结点,引用) 1.3 题目要求题目要求 实现附加头结点循环单链表的基本操作:创建空表、输出、求表长、取元素、查 找、替换、插入、删除、清空。 2 概要设计概要设计 2.1 存储结构存储结构 存储结构 L data next data next data next dat a next 空闲 typedef struct node datatype data;/*数据域*/ s
3、truct node *next;/*指针域*/ LNode,*LinkList;/*结点及结点的地址*/ 2.2 基本操作基本操作 创建空表、输出、求表长、取元素、查找、替换、插入、删除、清空。 2 3 详细设计详细设计 3.1 流程图流程图 各个算法的设计如下: 1.1.主函数:主函数: 2.主菜单主菜单 用于进行指示进行各种操作,是与每个函数都相联系的一个函数 开始 创建空循环链表 利用头插法将数组中 数据插入打链表 调用菜单 Menu() 结束 菜单 开始 输入 xz 求 表 长 取 元 素 查 找 替 换 显 示 数 据 插 入 删 除 清 空 退 出 结束 3 3.显示链表显示链表
4、 先让指针指向首元结点,在判断该指针是否为头指针,不是则输入数据,实则退 出 p = head-next; 图 3 4.求表长求表长 先求表的初始长,在判断链表是否为空,不是则 len 自加,否则结束 开始 p=head-next coutnext; while(p!= head) 结束 是 否 是 否 开始 p=head;int i,len = ListLen(head) 判断链表是否为空 +len;p=p-next 结束 4 5.取元素取元素 先求表长,在判断 Index len,为否则循环,一直活得该数据 6.查找查找 求表长, 在判断链表是否为空, 是则结束, 否则判断要查找的数据是否
5、在链表中, 是则成功 是 否 否 是 开始 p=head;int i,len = ListLen(head) 判断链表是否为空 if(p-next-data= data) p = p-next 结束 是 否 开始 p = head Index len for(i = 0; i next); 结束 获取该数据 5 7.替换替换 判断要替换的位置是否在链表范围中,是则循环找到要替换的数据替换,否则结 束 是 否 开始 p=head;int i,len = ListLen(head) Index len for(i = 0; i next); 结束 p-data=data 6 8.插入插入 判断将要
6、插入的位置是否在链表范围内,是则循环将要插入的数据插入,否则结 束 9.删除删除 判断链表是否为空,否则删除该结点,是则结束 是 否 开始 p=head;int i,len = ListLen(head) Index len for(i=1;inext); 插入数据 结束 是 否 否 是 开始 p = head 判断链表是否为空 p-next-data = data 删除该结点 结束 7 10.清空清空 判断聊表是够为空,否则依次释放空间,否则结束 p-next-data = data 3.2 源程序源程序 #include using namespace std; typedef int ElemType; typedef struct node ElemType data; struct node *next; LNode,*LinkList,*pNODE; / 创建一个有头结点的空循环表。 LinkList InitList(void) pNODE head = new LNode