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