数据结构 实验一:实现单链表各种基本运算的算法

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

- 1 -

实验一:实现单链表各种基本运算的算法

一、 实验目的

1、 掌握单链表存储结构的类型定义;

2、 实现单链表各种基本运算的算法。

二、 实验环境

1、 Windows 操作系统;

2、 Visual C++ 6.0

三、 实验内容

实现单链表各种基本运算的算法。

四、 概要设计

1.存储结构的类型定义:

Typedef struct LNode

{

ElemType data;

Struct LNode *next;

}LinkList;

2.单链表示意图:

3.项目组成图:

4.algo2_2.cpp 的程序文件包含的函数原型及功能:

InitList(LinkList *&L) 初始化单链表L

DestroyList(LinkList *&L) 释放单链表L

ListEmpty(LinkList *L)判断单链表L 是否为空表

ListLength(LinkList *L)返回单链表L 的元素个数

DispList(LinkList *L)输出单链表L

GetElem(LinkList *L,int i,ElemType &e)获取单链表L 的第i 个元素

LocateElem(LinkList *L,ElemType e)在单链表L 中查找元素e

ListInsert(LinkList *&L,int i,ElemType e)在单链表L 中的第i 个位置上插入元素e

…… head a 1 a 2 a 3 a n ∧

ListDelete(LinkList *&L,int i,ElemType &e)在单链表L中删除第i个元素

5.exp2_2.cpp程序文件简介:

InitList(LinkList *&L) 初始化单链表L

DestroyList(LinkList *&L) 释放单链表L

ListEmpty(LinkList *L) 判断单链表L是否为空表

ListLength(LinkList *L) 返回单链表L的元素个数

DispList(LinkList *L) 输出单链表L

GetElem(LinkList *L,int i,ElemType &e) 获取单链表L的第i个元素

LocateElem(LinkList *L,ElemType e) 在单链表L中查找元素e

ListInsert(LinkList *&L,int i,ElemType e) 在单链表L中的第i个位置上插入元素e ListDelete(LinkList *&L,int i,ElemType &e) 在单链表L中删除第i个元素

6.proj2-2的项目的模块结构:

在文件algo2-2中,

(1)定义单链表结构类型;

(2)初始化单链表

(3)定义释放单链表的函数

(4)定义判断单链表是否为空的函数

(5)定义返回单链表元素个数的函数

(6)定义输出单链表的函数

(7)定义获取第i个元素的函数

(8)定义查找元素的函数

(9)定义插入元素的函数

(10)定义删除元素的函数

在文件exp2-2中分别调用algo2-2中所定义的函数

7.函数调用关系图:

五、详细设计

源代码清单见附录。

六、测试、改进、界面

要求:逐一测试各个功能,包括正常测试(例如插入——i在合理范围的测试)、极端情况的测试(例如插入——i超出下限、上限的测试),并逐一做出结论,对出现异常的要给出改进方案。1.测试:

(1)插入:

i=4:

i=-4:

i=44:

结论:当i在合理范围时,元素能够准确插入;当i超出下限时,元素能够插入,但总是插入第一个位置;当i超出上限时,元素不能插入。

(2)查找:

i=3:

i=-3:

i=33:

结论:当i在合理范围时,元素能够准确查找到;当i超出下限或超出上限时,元素无法查找。

(3)删除:

i=3:

i=-3:

i=33:

结论:当i在合理范围时,元素能够准确删除;当i超出下限时,元素能够删除,但总是删除第一个位置的元素;当i超出上限时,元素不能删除。

2.改进:为了使在极端情况下,程序能输出Error,修改代码,使其实现以下功能:(1)插入:

i=-4:

i=44:

(2)查找:

i=-3:

I=33:

(3)删除:

i=-3:

i=33:

附录——源代码清单

/*文件名:algo2_2.cpp*/

#include

#include

typedef char ElemType;

typedef struct LNode /*定义单链表结点类型*/

{

ElemType data;

struct LNode *next;

} LinkList;

void InitList(LinkList *&L)

{

L=(LinkList *)malloc(sizeof(LinkList)); /*创建头结点*/

L->next=NULL;

相关文档
最新文档