线性表实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构

实验名称:___线性表_________________________

学生姓名:张鑫磊____________________________

班级:2013211107____________________________ 班内序号:01____________________________

学号:2013210182____________________________ 日期:2015.1.6____________________________

(一)实验目的和要求

实验目的:熟练掌握线性表的基本操作在顺序存储结构上的实现。

实验要求:任选一种高级程序语言编写源程序,并调试通过,测试正确。

(二)实验主要内容

1. 建立n个元素的顺序表SqList,实现顺序表的基本操作;

2. 在SqList的元素i之后插入一个元素,实现顺序表插入的基本操作;

3. 在sqList中删除指定位置i上的元素,实现顺序表删除的操作。

4.

(三)仪器设备

PC机,Windows XP操作平台,Visual C++

(四)实验原理

顺序表操作:定义一个顺序表类,该类包括顺序表的存储空间、存储容量和长度,以及构造、插入、删除、遍历等操作的方法

(五)实验步骤与调试分析:

顺序表操作:先构造有四个数据的顺序表,在第4个位置插入9,再读取并删除第3个元素。

(六)源程序:

#include

using namespace std;

const int LIST_INIT_SIZE=10; //顺序表初始长

const int LISTINCREMENT=5; //顺序表长度增值

class SqList

{

int *L; //定义存储空间

起始地址

int length; //顺序表当前长度

int listsize; //顺序表当前存储容量

bool flag; //设立标志值记录操作成败

public:

SqList(int v1,int v2,int v3,int v4); //构造函数构造并初始化

顺序表

void ListInsert(int i,int e); //实现将e插入到顺序表

中第i个位置

void ListDelete(int i,int &e); //实现删除顺序表第i个

元素

void ListVisit(); //实现顺序表的遍历

};

SqList::SqList(int v1,int v2,int v3,int v4) //构造并初始化顺序表{

L=new int[LIST_INIT_SIZE];

if(!L) //分配失败

{

flag=false;

cout<<"ERROR"<

}

else //分配成功,进行初始化

{

*L=v1;

*(L+1)=v2;

*(L+2)=v3;

*(L+3)=v4;

length=4;

listsize=LIST_INIT_SIZE;

flag=true;

}

}

void SqList::ListInsert(int i,int e) //插入元素

{

int *p,*q;

int t;

if(i<1||i>length+1) cout<<"ERROR"<

else

{

if(length==listsize)

//空间不足,增加分配

{

p=new int[listsize+LISTINCREMENT];

if(!p) cout<<"ERROR"<

//分配失败

else //分配成功,复制顺序表

{

for(t=0;t

*(p+t)=*(L+t);

q=L;L=p;p=q;

delete q;

listsize+=LISTINCREMENT;

}

}

for(t=length;t>=i;t--)

*(L+length)=*(L+length-1);

*(L+i-1)=e;

length++; //插入成功,表长加1

}

}

void SqList::ListDelete(int i,int &e)

{

if(i<1||i>length) cout<<"ERROR"<

else

{

e=*(L+i-1);

while(i

{

*(L+i-1)=*(L+i);

i++;

}

length--;

//删除成功表长减1

}

}

void SqList::ListVisit()

//遍历

{

int i;

for(i=0;i

cout<<" "<<*(L+i);

cout<

}

int main()

{

int e=0;

SqList list(2,3,4,5);

list.ListVisit();

list.ListInsert(4,9);

list.ListVisit();

相关文档
最新文档