安徽师范大学
数学计算机科学学院实验报告 专业名称
实 验 室实验课程
实验名称姓 名
学 号 [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、 测试数据与结果