数据结构课程设计-- 循环单链表

上传人:ji****72 文档编号:27375866 上传时间:2018-01-09 格式:DOC 页数:22 大小:1.09MB
返回 下载 相关 举报
数据结构课程设计--  循环单链表_第1页
第1页 / 共22页
数据结构课程设计--  循环单链表_第2页
第2页 / 共22页
数据结构课程设计--  循环单链表_第3页
第3页 / 共22页
数据结构课程设计--  循环单链表_第4页
第4页 / 共22页
数据结构课程设计--  循环单链表_第5页
第5页 / 共22页
点击查看更多>>
资源描述

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

1、信息科学与技术学院数据结构课程设计报告题目名称: 循环单链表(附加头结点,引用)专业班级: 计算机科学与技术 2011 级 1 班学生姓名: 张峻学生学号: 2011508004指导教师: 高攀目 录1 课程设计的目的 .11.1 课程设计的目的 .11.2 课程设计的题目 .11.3 题目要求 .12 概要设计 .12.1 存储结构 .12.2 基本操作 .13 详细设计 .23.1 流程图 .23.2 源程序 .74 测试 .125 课程设计总结 .196 参考书目: .2011 课程设计的目的1.1 课程设计的目的更好的掌握数据结构这门课程,会用数据结构的基本思想及算法解决实际问题。更好

2、的掌握循环链表,能进行各种基本的操作,提高编程能力。1.2 课程设计的题目循环单链表(附加头结点,引用)1.3 题目要求实现附加头结点循环单链表的基本操作:创建空表、输出、求表长、取元素、查找、替换、插入、删除、清空。2 概要设计2.1 存储结构存储结构L data next data next data next data next 空闲 typedef struct nodedatatype data;/*数据域*/struct node *next;/*指针域*/LNode,*LinkList;/*结点及结点的地址*/2.2 基本操作创建空表、输出、求表长、取元素、查找、替换、插入、删除

3、、清空。23 详细设计3.1 流程图各个算法的设计如下:1.主函数:2.主菜单用于进行指示进行各种操作,是与每个函数都相联系的一个函数开始创建空循环链表利用头插法将数组中数据插入打链表调用菜单 Menu()结束菜单开始输入 xz求表长取元素查找替换显示数据插入删除清空退出结束33.显示链表先让指针指向首元结点,在判断该指针是否为头指针,不是则输入数据,实则退出p = head-next;图 34.求表长先求表的初始长,在判断链表是否为空,不是则 len 自加,否则结束开始p=head-next;coutdata;p = p-next;while(p!= head)结束是否是否开始p=head;

4、int i,len = ListLen(head)判断链表是否为空+len;p=p-next;结束45.取元素先求表长,在判断 Index len,为否则循环,一直活得该数据6.查找求表长,在判断链表是否为空,是则结束,否则判断要查找的数据是否在链表中,是则成功是否否是是开始p=head;int i,len = ListLen(head)判断链表是否为空if(p-next-data= data)p = p-next结束是否开始p = headIndex lenfor(i = 0; i next);结束获取该数据57.替换判断要替换的位置是否在链表范围中,是则循环找到要替换的数据替换,否则结束是

5、否开始p=head;int i,len = ListLen(head)Index lenfor(i = 0; i next);结束p-data=data68.插入判断将要插入的位置是否在链表范围内,是则循环将要插入的数据插入,否则结束9.删除判断链表是否为空,否则删除该结点,是则结束是否开始p=head;int i,len = ListLen(head)Index lenfor(i=1;inext);插入数据结束是否否是开始p = head判断链表是否为空p-next-data = data删除该结点结束710.清空判断聊表是够为空,否则依次释放空间,否则结束p-next-data = dat

6、a3.2 源程序#include using namespace std;typedef int ElemType;typedef struct nodeElemType data;struct node *next;LNode,*LinkList,*pNODE;/ 创建一个有头结点的空循环表。LinkList InitList(void) pNODE head = new LNode; head-next = head;return head;/ 头插法。将给定结点插在链表头部。void InsertHead(LinkList head,pNODE anode) anode-next = h

7、ead-next; head-next = anode;是否开始p = head判断链表是否为空依次释放空间结束8/ 返回链表长度。int ListLen(LinkList head) int len = 0;pNODE p = head;while(p-next != head) +len; p = p-next; return len;/ 查找。成功返回 1,否则返回 0。int ListSearch(LinkList head, ElemType data)pNODE p = head;while(p-next != head) if(p-next-data = data) return

8、 true; p = p-next;return 0;/ 获取指定索引号的数据。void GetData(LinkList head,int Index,ElemType data) pNODE p = head;int i,len = ListLen(head);if(Index len)cout next);data = p-data; cout len)cout next);p-data=data;9cout len)cout next);s=new LNode;s-data=data;s-next=p-next;p-next=s;cout next != head) if(p-next

9、-data = data) q = p-next; p-next = q-next;delete q;return 1;p = p-next;return 0;/ 释放链表void ListDestroy(LinkList head) pNODE q,p = head;while(p-next != head)q = p-next;p-next = q-next;delete q;delete head;cout next;while(p != head)cout data;p = p-next;cout xz;switch(xz)case 1: ListShow(head);system(p

10、ause);system(cls);Menu(head);break;case 2:cout Index;11GetData(head,Index,data);system(pause);system(cls);Menu(head);break;case 4:cout data;if(ListSearch(head, data)cout Index data;NodeReplace(head,Index,data);system(pause);system(cls);Menu(head);break;case 6:cout Index data;ListInsert(head,Index,da

11、ta);system(pause);system(cls);Menu(head);break;case 7:cout data;if(NodeErase(head,data)cout data = ai;InsertHead(head,anode);Menu(head);return 0;4 测试菜单界面显示各种功能需进行的各种操作,界面如下:13选择 1 时,显示链表中的数据,如图:14选择 2 时,可以得到链表长度,如图:选择 3 时,输入要获取的数据的位置,成功则如图:15选择 4 时,可以查找元素是否在该链表中,但该功能不能显示出查找到的数据的位置,有所不足,如图:选择 5 时,可以替换你指定位置的数据,如图

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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