数据结构实验研究报告线性表的顺序表示和实现.docx
- 文档编号:7506590
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:8
- 大小:51.33KB
数据结构实验研究报告线性表的顺序表示和实现.docx
《数据结构实验研究报告线性表的顺序表示和实现.docx》由会员分享,可在线阅读,更多相关《数据结构实验研究报告线性表的顺序表示和实现.docx(8页珍藏版)》请在冰豆网上搜索。
数据结构实验研究报告线性表的顺序表示和实现
长沙理工大学
数学与计算科学学院
实验报告
实验项目名称:
线性表的顺序表示和实现
所属课程名称:
数据结构A
实验类型:
验证性
实验日期:
2012年4月5号
班级:
信管10-02班
学号:
201044070218
姓名:
张松涛
成绩:
一、实验概述:
【实验目的】
(1)、线性表的逻辑结构特征。
①、总存在第一个和最后一个元素。
②、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素。
③、除最后一个元素以外,每一个元素总存在唯一一个直接后驱元素。
(2)、顺序表的特征。
①、逻辑关系上相邻的物理位置上也相邻。
②、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址。
(3)学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
【实验原理】
//--------线性表的动态分配顺序存储结构-----------
#defineLIST_INIT_SIZE5//线性表存储空间的初始分配量
#defineLISTINCREMENT2//线性表存储空间的分配增量
Typedefstruct{
ElemType*elem;//存储空间基址
intlength;//当前长度
intlistsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}SqList;
【实验环境】
实验的环境:
VC++
二、实验内容:
【实验方案】
编写主函数,调用初始化,建立顺序表的算法以及插入和删除算法。
调试
运行输入数据得出结果并进行分析。
【实验过程】(实验步骤、记录、数据、分析)
将源程序输入VC6.0
发现有OVERFLOW':
undeclaredidentifier,错误,是没有定义导致。
加入宏替换定义OVERFLOW'。
编译之后没有发现语法错误
连接没问题,直接运行
【实验结论】(结果)
【实验小结】(收获体会)
1.实验要细心,认真。
把数据结构书上的程序要输完整,否则程序运行不了。
2.注意每个语句不要遗漏分号。
3.除了主程序正确,程序的存储结构不要漏输进去。
三、指导教师评语及成绩:
评语
评语等级
优
良
中
及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强
2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)
4实验结论正确.
成绩:
指导教师签名:
批阅日期:
附录1:
源程序
#include
#include
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
#defineLIST_INIT_SIZE5//线性表存储空间的初始分配量
#defineLISTINCREMENT10
typedefstruct{
ElemType*elem;
intlength;
intlistsize;
}SqList;
StatusInitList_Sq(SqList&L){
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!
L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
returnOK;
}//InitList_Sq
ElemType*newbase,*p,*q;
StatusListInsert_Sq(SqList&L,inti,ElemTypee){
if(i<1||i>L.length+1)returnERROR;
if(L.length>=L.listsize){
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!
newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
returnOK;
}//ListInsert_Sq
StatusListDelete_Sq(SqList&L,inti,ElemType&e){
if((i<1)||(i>L.length))returnERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
returnOK;
}//ListDelete_Sq
voidmain()
{SqListL;
inti;
InitList_Sq(L);
for(i=0;i<=L.listsize;i++)
{scanf("%d",&L.elem[i]);
L.length++;
}
for(i=0;i printf("%d",L.elem[i]); printf("\n"); ElemTypee; scanf("%d%d",&i,&e); ListInsert_Sq(L,i,e); for(i=0;i printf("%d",*(L.elem+i)); printf("\n"); scanf("%d%d",&i); ListDelete_Sq(L,i,e); for(i=0;i printf("%d",*(L.elem+i)); printf("\n"); } 附录2: 实验报告填写说明 1.实验项目名称: 要求与实验教学大纲一致。 2.实验目的: 目的要明确,要抓住重点,符合实验教学大纲要求。 3.实验原理: 简要说明本实验项目所涉及的理论知识。 4.实验环境: 实验用的软、硬件环境。 5.实验方案(思路、步骤和方法等): 这是实验报告极其重要的内容。 概括整个实验过程。 对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。 对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。 对于创新性实验,还应注明其创新点、特色。 6.实验过程(实验中涉及的记录、数据、分析): 写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。 7.实验结论(结果): 根据实验过程中得到的结果,做出结论。 8.实验小结: 本次实验心得体会、思考和建议。 9.指导教师评语及成绩: 指导教师依据学生的实际报告内容,给出本次实验报告的评价。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 研究 报告 线性 顺序 表示 实现