数据结构实验一实现单链表各种基本运算的算法.doc
文本预览下载声明
实验一:实现单链表各种基本运算的算法
实验目的
掌握单链表存储结构的类型定义;
实现单链表各种基本运算的算法。
实验环境
Windows操作系统;
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
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超出下限、上限的测试),并逐一做出结论,对出现异常的要给出改进方案。
测试:
插入:
i=4:
i=-4:
i=44:
结论:当i在合理范围时,元素能够准确插入;当i超出下限时,元素能够插入,但总是插入第一个位置;当i超出上限时,元素不能插入。
查找:
i=3:
i=-3:
i=33:
结论:当i在合理范围时,元素能够准确查找到;当i超出下限或超出上限时,元素无法查找。
删除:
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 stdio.h
#include malloc.h
typedef char ElemType;
typedef struct LNode /*定义单链表结点类型*/
{
ElemType data;
struct LNode *next;
} LinkList;
void InitList(LinkList *L)
{
L=(LinkList *)malloc(sizeof(LinkList)); /*创建头结点*/
L-next=
显示全部