中山大学新华学院实验报告 课程名称: 数 据 结 构 实验名称: 实 验 一 线性表的顺序存储结构 和链式存储结 构 班 级: 09 级计算机 学生姓名: 郑永坤 学号: 09052029 指导教师评定: 签 名: 题目:利用线性表的顺序存储结构和链式存储结构分别存储数据并把数据输出。 一、需求分析 ⒈ 本演示程序分别用顺序存储结构和链式存储结构存储数据并把数据输出。 ⒉ 在演示过程序中,用户敲击键盘,输入数据存储,即可看到数据的输出。 ⒊ 程序执行的命令包括: (1)定义结构体 (2)建立空表 (3)构造输入数据的函数 (4)构造输出数据的函数 二、概要设计 ⒈ 为实现上述算法,需要线性表的抽象数据类型: 顺序存储结构的抽象数据类型: ADT SqList { 数据对象:D={ai:|ai∈ElemSet,i=1…n,n≥0} 数据关系:R1={
|ai-1,ai∈D,i=2,…n≥0} 基本操作: InitList_Sq(SqList *L) 操作结果:构造一个空的线性表L。 inputlist(SqList *L) 初始条件:线性表L 已经存在 操作结果:存储输入的数据元素。 outputlist(SqList *L) 初始条件:线性表L 已经存在 操作结果:输出表L。 }ADT SqList 链式存储结构的抽象数据类型: ADT linklist { 数据对象:D={ai:|ai∈ElemSet,i=1…n,n≥0} 数据关系:R1={|ai-1,ai∈D,i=2,…n≥0} 基本操作: linklist *creatL(linklist *L) 初始条件:线性表L 已经存在 操作结果:存储输入的数据元素。 output(linklist *L) 初始条件:线性表L 已经存在 操作结果:输出表L。 }ADT linklist 2. 本程序有三个模块: ⑴ 主程序模块 void main(){ 初始化; { 接受命令; 显示结果; } } ⑵ 线性表单元模块:实现线性表抽象数据类型; ⑶ 结点结构单元模块:定义线性表中的结点结构。 三、详细设计 ⒈结点类型 顺序存储结构的结点类型: typedef struct{ ElemType * elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以 size(ElemType)为单位) }SqList; 链式存储结构的结点类型: typedef struct Lnode { int score; struct Lnode *next; }linklist;//定义一个节点 2.对抽象数据类型中的部分基本操作的伪码算法如下: 顺序存储结构: int InitList_Sq(SqList *L){//建立一个空的线性表 L->elem=(ElemType * )malloc(LIST_INIT_SIZE * siz...