链式存储结构实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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已存在。

相关文档
最新文档