大数据结构实验报告材料--1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学
数据结构与算法
实验报告
实验题目:线性表顺序存储试验实验时间:
实验地点:
班级:学号:姓名:
一、实验目的及要求
1、掌握用Visual C++6.0上机调试顺序表的基本方法
2、掌握顺序表的基本操作,插入、删除、查找等算法的实现
[基本要求] 要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。二、实验意义及原理
当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。
三、算法分析
(1)以下为函数运行结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
(2)线性表的动态分配顺序存储结构
#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间分配增量
typedef int Status; //函数类型,其值为为函数结果状态代码
typedef int ElemType; //假设数据元素为整型
typedef struct
{
ElemType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量
}Sqlist;
(2)构造函数
//函数名:InitList()
//参数:SqList L
//初始条件:无
//功能:构造一个空线性表
Status InitList(Sqlist L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(L.elem==NULL)
exit(OVERFLOW);
else
{
L.length=0;
L.listsize=LISTINCREMENT;
return OK;
}
}
(3)插入函数
//函数名:ListInsert()
//参数:SqList L,int i,ElemType e
//初始条件:线性表L已存在,1<=i<=ListLength(L)+1
//功能:在线性表中第i个数据元素之前插入数据元素e
Status ListInsert(Sqlist L,int i,ElemType e)
{
int *q=&(L.elem[i-1]);
ElemType *newbase,*p;
if(i<1||i>(L.length+1))
return ERROR;
if(L.length>=L.listsize)
{
newbase=(ElemType*)realloc(L.elem,L.listsize+LISTINCREMENT*sizeof(ElemType));
if(newbase==NULL)
exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
(4)删除函数
//函数名:ListDelete()
//参数:SqList L,int i,Elemtype e
//初始条件:线性表L已存在,1<=i<=ListLength(L)
//功能:将线性表L中第i个数据元素删除Status ListDelet(Sqlist L,int i,ElemType e) {
if(i<1||(i>L.length))
return ERROR;
ElemType *p,*q;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
return OK;
}
四、源代码
#include
using namespace std;
#define MAXSIZE 20
typedef int ElemType;
typedef struct{
ElemType data[MAXSIZE];
int length;
int listsize;
}SqList;
//构造空线性表List
bool InitList(SqList &L){
for(int i=0;i L.data[i]=0;} L.length=0; L.listsize = MAXSIZE; return true;