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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

信息科学与技术学院《数据结构》课程设计报告

题目名称:循环单链表(附加头结点,引用)专业班级:计算机科学与技术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 课程设计的目的

更好的掌握数据结构这门课程,会用数据结构的基本思想及算法解决实际问题。更好的掌握循环链表,能进行各种基本的操作,提高编程能力。

1.2 课程设计的题目

循环单链表(附加头结点,引用)

1.3 题目要求

实现附加头结点循环单链表的基本操作:创建空表、输出、求表长、取元素、查找、替换、插入、删除、清空。

2 概要设计

2.1 存储结构

存储结构

L data next data next data next dat

next

typedef struct node{

datatype data;/*数据域*/

struct node *next;/*指针域*/

}LNode,*LinkList;/*结点及结点的地址*/

2.2 基本操作

创建空表、输出、求表长、取元素、查找、替换、插入、删除、清空。

3 详细设计

3.1 流程图

各个算法的设计如下:

1.主函数:

2.主菜单

用于进行指示进行各种操作,是与每个函数都相联系的一个函数

3.显示链表

先让指针指向首元结点,在判断该指针是否为头指针,不是则输入数据,实则退出

4.求表长

先求表的初始长,在判断链表是否为空,不是则len自加,否则结束

先求表长,在判断Index < 1 || Index > len,为否则循环,一直活得该数据

6.查找

求表长,在判断链表是否为空,是则结束,否则判断要查找的数据是否在链表中,是则成功

判断要替换的位置是否在链表范围中,是则循环找到要替换的数据替换,否则结束

判断将要插入的位置是否在链表范围内,是则循环将要插入的数据插入,否则结束

9.删除

判断链表是否为空,否则删除该结点,是则结束

10.清空

判断聊表是够为空,否则依次释放空间,否则结束

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;

head->next = head;

return head;

}

// 头插法。将给定结点插在链表头部。

void InsertHead(LinkList head,pNODE anode) {

anode->next = head->next;

head->next = anode;

}

// 返回链表长度。

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 true;

p = p->next;

}

return 0;

}

// 获取指定索引号的数据。

void GetData(LinkList head,int Index,ElemType data)

{

pNODE p = head;

int i,len = ListLen(head);

if(Index < 1 || Index > len)

cout <<"获取失败" <

for(i = 0; i next);

data = p->data;

cout <<"获取成功,其值为:"<

// 用给定结点替换指定索引的结点。

void NodeReplace(LinkList head, int Index, int data)

{

pNODE p = head;

int i,len = ListLen(head);

if(Index < 1 || Index > len)

cout <<"错误" <

for(i = 0; i next);

p->data=data;

相关文档
最新文档