链式存储结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号姓名实验日期2012-12-15
实验室计算机软件技术实验指导教师设备编号401 实验内容实习单元2 线性表
一.实验目的
(1)掌握使用VC++上机调试线性表的基本方法;
(2)掌握线性表的基本操作:插入、删除、查找等运算在链式存储结构上的实现。
二.实验内容
线性表在链式存储结构下的基本操作
三.实验要求
(1)认真阅读和理解实验1.1中给出的程序。并据此写出线性表的各种基本操作在链
式存储结构上的程序。
(2)上机运行写出的程序,并且独立调试通过。
四、给出线性表的抽象数据类型
ADT LinkLis{
数据对象:D={ a i| a i∈ ElemSet,i=1,2,3,…,n,n≥ 0}
数据关系:R={ |a i-1,a i∈D,i∈2,3,4, …,n,n≥ 0}
基本操作:
InitList_L(LinkLis &L);
操作结果:创建一个空的线性表L
ListInsert_L (LinkLis &L,int i,ElemType e);
初始条件:线性表L已存在。
操作结果:在线性表L中第i个位置插入元素e
DestroyList_L(LinkLis &L);
初始条件:线性表L已存在。
操作结果:销毁一个线性表L
Status ClearList_L(LinkLis &L);
初始条件:线性表L已存在。
操作结果:将线性表L重置
ListEmpty_L (LinkLis L);
初始条件:线性表L已存在。
操作结果:若L为空,则返回TURN,否则返回FALSE。
ListLength_L(LinkLis L);
初始条件:线性表L已存在。
操作结果:求线性表L中元素的个数(返回表长)
GetElem_L (LinkLis L,int i,ElemType &e);
初始条件:线性表L已存在。
操作结果:用e返回线性表中第i个元素的值。
LocateElem_L (LinkLis L,
ElemType e,Status (*compare)(ElemType,ElemType)); 初始条件:线性表L已存在。
操作结果:在线性表L中查找元素e
Status PriorElem_L (LinkLis L,ElemType cur_e,ElemType &pre_e);
初始条件:线性表L已存在。
操作结果:用pre_e返回cur_e的前驱
NextElem_L (LinkLis L,ElemType cur_e,ElemType &next_e);
初始条件:线性表L已存在。
操作结果:用next_e返回cur_e的后继
ListDelete_L (LinkLis &L,int i,ElemType &e);
初始条件:线性表L已存在。
操作结果:求线性表L中元素的个数(返回表长)
ListTraverse_L (LinkLis L, Status (*visit)(ElemType));
初始条件:线性表L已存在。
操作结果:对线性表中每个元素调用函数visit()
js_L(LinkLis L)
初始条件:线性表L已存在。
操作结果:求奇数个数
os_L(LinkLis L)
初始条件:线性表L已存在。
操作结果:求偶数个数
Findd_L0120(LinkLis L, Status i, ElemType *e)
初始条件:线性表L已存在。
操作结果:查找倒数第i个元素
五、详细设计
1、给出本数据的存储结构定义及链式存储结构定义
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define NULL 0
#define OVERFLOW -2
实现线性表的抽象数据类型如下:
typedef int status;
typedef int ElemType; //定义线性表的数据元素类型为int
链式存储实现的抽象数据类型如下:
typedef struct LNode0120
{
ElemType data;
struct LNode0120 *next;
}LNode0120,*LinkLis;
2.运算的函数声明:
Status InitList_L(LinkLis &L);
操作结果:创建一个空的线性表L
Status ListInsert_L (LinkLis &L,int i,ElemType e);
初始条件:线性表L已存在。
操作结果:在线性表L中第i个位置插入元素e
Status DestroyList_L(LinkLis &L);
初始条件:线性表L已存在。
操作结果:销毁一个线性表L
Status ClearList_L(LinkLis &L);
初始条件:线性表L已存在。
操作结果:将线性表L重置
Status ListEmpty_L (LinkLis L);
初始条件:线性表L已存在。