大数据结构实验报告材料--1

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

相关文档
最新文档