线性表实验报告

安徽师范大学

数学计算机科学学院实验报告 专业名称

实 验 室实验课程

实验名称姓 名

学 号 [1**********] 同组人员实验日期 2015.4.9 物联网工程 数据结构 庞现然

1、 实验目的

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

2、 实验原理

运用各函数的调用,来实现线性表的基本操作。

3、 需求分析输:

(1)程序目的:实验线性表的基本操作。

(2)输入的形式:线性表

(3)输入值的范围:处理范围内

(4)输出的形式:线性表

(5)程序能达到的功能:实现线性表的基本操作

(6)测试数据:13,5,27,9,32,123,76,98,54,87

4、 概要设计 typedef int Status;

typedef int

5、 详细设计

各函数及其定义:

1.Status InitList(Sqlist *L)//初始化线性表!

{

2.void DestroyList(Sqlist *L)//销毁线性表!

{

free(L);

}//DestroyList_Sq

3.Status ListEmpty(Sqlist L)//判定是否为空表!

{

if(L.length == 0) return ERROR;//如L为空表,则返回0,否则返回1. return OK; L->elem = (ElemType *)malloc(LIST_Init_Size*sizeof(ElemType)); if(! L->elem) exit (OVERFLOW) ; L->length = 0; return OK; //储存分配失败 //空表长度为0 L->listsize = LIST_Init_Size; //初始储存量 }//InitLIst_Sq

}//ListEmpty_Sq

4.Status ListLength(Sqlist *L)//求线性表的长度!

{

return(L->length);

}//ListLength_Sq

5.void DispList(Sqlist *L)//输出线性表!

{

int i; /*if ( ListEmpty(L) == 0 ) return;//判断是否为空? */ for ( i = 0; ilength;i++) { } printf("\n"); printf("%d ",L->elem[i]);

}//DIspList_Sq

6.int GetElem(Sqlist *L,int i,ElemType *e)//求某个数据元素的值!

{

if (iL->length) return 0; e = &L->elem[i-1];//该运算返回L中第 i(1≤i≤ListLength(L))个元素的值,存放在e中 return OK;

}//GetElem_Sq

7.

int LocateElem(Sqlist *L,ElemType e)//按元素查找!

{

int i = 0; while (i length && L->elem[i] != e) i++; return 0; //若这样的元素不存在,则返回值为0。 return i+1; //该运算顺序查找第1个值域与e相等的数据元素的序号 if (i >= L->length) else

}//LocateElem_Sq

8.

int ListInsert(Sqlist *L,int i,ElemType e)//插入数据元素!!!

/* 在顺序表L中第i个位置之前插入新的元素e */

{

int j; if ( i L->length+1) { } for (j = L->length;j > i;j--) { } L->length++; return OK; L->elem[j] = L->elem[j-1]; //将elem[j]之前的元素后移一个位置 ElemType *newbase; newbase = (ElemType if(!newbase) exit(OVERFLOW); //储存分配失败 L->elem = newbase; //新基址 L->listsize += LISTINCREMENT;//增加储存容量 return ERROR; //i值不合法 if (L->length >= L->listsize) //当前储存空间已满,增加分配 * )realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType)); i--; L->elem[i] = e;

}//ListInsert_Sq

9.

int ListDelete(Sqlist *L,int i,ElemType *e)//删除数据元素!!!

/* 在顺序表L中删除第i个元素,并用e返回其值 */

{

int j; if(( i L->length)) return ERROR; //i值不合法 i--; e = &L->elem[i]; for( j = i;j length-1;j++) { } L->length--; return OK; L->elem[j] = L->elem[j+1];//将elem[i]之后的元素前移一个位置

}//ListDelete_Sq

10.void ClearList(Sqlist *L ) //清空线性表!

{

L->length = 0;

}//ClearList_Sq

6、 调试分析

(1) 调试过程中遇到的问题:出现编译时出现can’open the “SqList.h”files 解决方法:百度,修改vc设置,解决问题。

(2) 对设计与实现的回顾讨论和分析;

工程文件包括头文件与源文件。本题中将Common.h与Sqlist.h两个头文件合为一个源文件Sqlist.h.

改进之处:显示效果有待改进。

((3) 体会

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

7、 测试数据与结果

int j; if(( i L->length)) return ERROR; //i值不合法 i--; e = &L->elem[i]; for( j = i;j length-1;j++) { } L->length--; return OK; L->elem[j] = L->elem[j+1];//将elem[i]之后的元素前移一个位置

}//ListDelete_Sq

10.void ClearList(Sqlist *L ) //清空线性表!

{

L->length = 0;

}//ClearList_Sq

6、 调试分析

(1) 调试过程中遇到的问题:出现编译时出现can’open the “SqList.h”files 解决方法:百度,修改vc设置,解决问题。

(2) 对设计与实现的回顾讨论和分析;

工程文件包括头文件与源文件。本题中将Common.h与Sqlist.h两个头文件合为一个源文件Sqlist.h.

改进之处:显示效果有待改进。

((3) 体会

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

7、 测试数据与结果

安徽师范大学

数学计算机科学学院实验报告 专业名称

实 验 室实验课程

实验名称姓 名

学 号 [1**********] 同组人员实验日期 2015.4.9 物联网工程 数据结构 庞现然

1、 实验目的

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

2、 实验原理

运用各函数的调用,来实现线性表的基本操作。

3、 需求分析输:

(1)程序目的:实验线性表的基本操作。

(2)输入的形式:线性表

(3)输入值的范围:处理范围内

(4)输出的形式:线性表

(5)程序能达到的功能:实现线性表的基本操作

(6)测试数据:13,5,27,9,32,123,76,98,54,87

4、 概要设计 typedef int Status;

typedef int

5、 详细设计

各函数及其定义:

1.Status InitList(Sqlist *L)//初始化线性表!

{

2.void DestroyList(Sqlist *L)//销毁线性表!

{

free(L);

}//DestroyList_Sq

3.Status ListEmpty(Sqlist L)//判定是否为空表!

{

if(L.length == 0) return ERROR;//如L为空表,则返回0,否则返回1. return OK; L->elem = (ElemType *)malloc(LIST_Init_Size*sizeof(ElemType)); if(! L->elem) exit (OVERFLOW) ; L->length = 0; return OK; //储存分配失败 //空表长度为0 L->listsize = LIST_Init_Size; //初始储存量 }//InitLIst_Sq

}//ListEmpty_Sq

4.Status ListLength(Sqlist *L)//求线性表的长度!

{

return(L->length);

}//ListLength_Sq

5.void DispList(Sqlist *L)//输出线性表!

{

int i; /*if ( ListEmpty(L) == 0 ) return;//判断是否为空? */ for ( i = 0; ilength;i++) { } printf("\n"); printf("%d ",L->elem[i]);

}//DIspList_Sq

6.int GetElem(Sqlist *L,int i,ElemType *e)//求某个数据元素的值!

{

if (iL->length) return 0; e = &L->elem[i-1];//该运算返回L中第 i(1≤i≤ListLength(L))个元素的值,存放在e中 return OK;

}//GetElem_Sq

7.

int LocateElem(Sqlist *L,ElemType e)//按元素查找!

{

int i = 0; while (i length && L->elem[i] != e) i++; return 0; //若这样的元素不存在,则返回值为0。 return i+1; //该运算顺序查找第1个值域与e相等的数据元素的序号 if (i >= L->length) else

}//LocateElem_Sq

8.

int ListInsert(Sqlist *L,int i,ElemType e)//插入数据元素!!!

/* 在顺序表L中第i个位置之前插入新的元素e */

{

int j; if ( i L->length+1) { } for (j = L->length;j > i;j--) { } L->length++; return OK; L->elem[j] = L->elem[j-1]; //将elem[j]之前的元素后移一个位置 ElemType *newbase; newbase = (ElemType if(!newbase) exit(OVERFLOW); //储存分配失败 L->elem = newbase; //新基址 L->listsize += LISTINCREMENT;//增加储存容量 return ERROR; //i值不合法 if (L->length >= L->listsize) //当前储存空间已满,增加分配 * )realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType)); i--; L->elem[i] = e;

}//ListInsert_Sq

9.

int ListDelete(Sqlist *L,int i,ElemType *e)//删除数据元素!!!

/* 在顺序表L中删除第i个元素,并用e返回其值 */

{

int j; if(( i L->length)) return ERROR; //i值不合法 i--; e = &L->elem[i]; for( j = i;j length-1;j++) { } L->length--; return OK; L->elem[j] = L->elem[j+1];//将elem[i]之后的元素前移一个位置

}//ListDelete_Sq

10.void ClearList(Sqlist *L ) //清空线性表!

{

L->length = 0;

}//ClearList_Sq

6、 调试分析

(1) 调试过程中遇到的问题:出现编译时出现can’open the “SqList.h”files 解决方法:百度,修改vc设置,解决问题。

(2) 对设计与实现的回顾讨论和分析;

工程文件包括头文件与源文件。本题中将Common.h与Sqlist.h两个头文件合为一个源文件Sqlist.h.

改进之处:显示效果有待改进。

((3) 体会

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

7、 测试数据与结果

int j; if(( i L->length)) return ERROR; //i值不合法 i--; e = &L->elem[i]; for( j = i;j length-1;j++) { } L->length--; return OK; L->elem[j] = L->elem[j+1];//将elem[i]之后的元素前移一个位置

}//ListDelete_Sq

10.void ClearList(Sqlist *L ) //清空线性表!

{

L->length = 0;

}//ClearList_Sq

6、 调试分析

(1) 调试过程中遇到的问题:出现编译时出现can’open the “SqList.h”files 解决方法:百度,修改vc设置,解决问题。

(2) 对设计与实现的回顾讨论和分析;

工程文件包括头文件与源文件。本题中将Common.h与Sqlist.h两个头文件合为一个源文件Sqlist.h.

改进之处:显示效果有待改进。

((3) 体会

1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。

3. 掌握模块化程序设计方法。

7、 测试数据与结果


相关文章

  • 非线性电阻研究报告
  • 电工电子综合实验论文 --非线性电阻电路的研究 班级:09042202 学号:0904220206 姓名:刘雪莲 一:摘要 当电阻两端的电压与流过的电阻的电流不成比例关系时,伏安特性是曲线,电阻不是一个常数,随电压.电流变动,称之为非线性电 ...查看


  • 试剂分析性能评估模板
  • 胆固醇测定试剂盒 分析性能评估资料 山东高密彩虹分析仪器有限公司 目 录 1 概述 2 胆固醇测定试剂盒及相关信息 3 性能评估资料 3.1 检测限评估资料 3.2 线性范围评估资料 3.3 可报告范围评估资料 3.4 准确性(回收实验)评 ...查看


  • 线性范围试验测定实验报告
  • 线性范围试验测定实验报告 一. 实验目的 线性范围试验用于评价候选方法的分析测量范围. 二. 实验材料 1. 试剂:40mmol/L葡萄糖标准溶液.5.55mmol/L葡萄糖标准溶液.1.2号血清质控品.GOD- POD 试剂盒 2. 器材 ...查看


  • 计量经济学实验报告3自相关异方差多重共线性心得体会
  • 辽宁工程技术大学上机实验报告 成绩 实验名称 院系 姓名 实验 目的 计量经济学多重共线性 异方差 自相关 工商管理 于佳琦 专业 学号 金融 0910220228 班级 日期 09-2 6.15 简述本次实验目的:掌握多元线性回归模型基础 ...查看


  • 临床化学自建检测系统分析性能确认的分析测量范围和临床可报告范围重点
  • ・946・・ 论著・ 临床化学自建检测系统分析性能确认的 分析测量范围和临床可报告范围 张秀明 范勇利 温冬梅 阚丽娟 萧金丽 陈康 [摘要] 目的 探讨临床化学自建检测系统分析测量范围(AMR)和临床可报告范围(CRR)的确认方法.方法 ...查看


  • 信号通过线性系统的特征分析 实验报告
  • 信号通过线性系统的特性分析 学号: 1028401083 姓名:赵静怡 一. 实验目的 1.掌握无失真传输的概念以及无失真传输的线性系统满足的条件 2.分析无失真传输的线性系统输入.输出频谱特性,给出系统的频谱特性 3.掌握系统幅频特性的测 ...查看


  • 线性代数实验报告
  • 线性代数实验报告 2013年12月24日 数学实验报告题目 一. 实验目的 1.熟悉MATLAB 的矩阵初等运算: 2.掌握求矩阵的秩.逆.化最简阶梯形的命令: 3.会用MABLAB 求解线性方程组 二. 实验问题 34⎤⎡4-22⎤⎡1 ...查看


  • 抽象数据类型的实现
  • 第3章 抽象数据类型的实现 3.1 实验概要 实验项目名称: 抽象数据类型的实现 实验项目性质: 设计性实验 所属课程名称: 数据结构 实验计划学时: 6 3.2 实验目的 对某个具体的抽象数据类型,运用课程所学的知识和方法,设计合理的数据 ...查看


  • 现代控制理论实验报告
  • 实验三 典型非线性环节 实验目的 1. 了解和掌握典型非线性环节的原理. 2. 用相平面法观察和分析典型非线性环节的输出特性. 实验原理及说明 实验以运算放大器为基本元件,在输入端和反馈网络中设置相应元件(稳压管.二极管.电阻和电容)组成各 ...查看


热门内容