《数据结构实验报告 线性表的顺序表示和实现.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告 线性表的顺序表示和实现.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沙理工数学与计算科学学院实验报告实验项目名称:线性表的顺序表示和实现所属课程名称:数据结构A实验类型:验证性实验日期 :2012年4月5号班级:信管10-02班学号:201044070218姓名:张松涛成绩:附录2:实验报告填写说明1 .实验项目名称:要求与实验教学大纲一致。2 .实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。3 .实验原理:简要说明本实验项目所涉及的理论知识。4 .实验环境:实验用的软、硬件环境。5 .实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几 个步骤来实现其
2、操作。对于设计性和综合性实验,在上述内容基础上还应该画出流程图、 设计思路和设计方法,再配以相应的文字说明。对于创新性实验,还应注明其创新点、 特色。6 .实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。7 .实验结论(结果):根据实验过程中得到的结果,做出结论。8 .实验小结:本次实验心得体会、思考和建议。9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。【实验目的】(1)、线性表的逻辑结构特征。、总存在第一个和最后一个元素。、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素。、除最后一个元
3、素以外,每一个元素总存在唯一一个直接后驱元素。(2)、顺序表的特征。、逻辑关系上相邻的物理位置上也相邻。、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址。(3)学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基 本操作和具体的函数定义。掌握顺序表的基本操作,实现顺序表的插入、删除、查找 以及求并集等运算。【实验原理】/线性表的动态分配顺序存储结构ttdefine LIST INIT SIZE5 线性表存储空间的初始分配量ttdefine LISTINCREMENT2 /线性表存储空间的分配增量Typedef struct ElemType *elem;存储
4、空间基址intlength;/当前长度int listsize;当前分配的存储容量(以sizeof (ElemType)为单位) SqList;【实验环境】实验的环境:VC+二、实验内容:【实验方案】编写主函数,调用初始化,建立顺序表的算法以及插入和删除算法。调试运行输入数据得出结果并进行分析。【实验过程】(实验步骤、记录、数据、分析)include ttinclude ttdefine TRUE 1 KdeFine FALSE 0 ttdefine OK 1 ttdefine ERROR Q ttdefine INFEASIBLE -1 typedef int Status; typedef
5、 int ElenType;ttdefine LIST_INIT_SIZE 5线性表存储空间的初始分配量 ttdefine LISTINCREMENT 10 typedef structSqList;Status InitList_Sq(SqList &L)L.elen=(ElenType *)nalloc(LIST_INIT_SIZE*sizeof(ElenType); if(?L.elem) exit(OUERFLOW);L.length-O;L.listsize=LIST_INIT_SIZE; return OK;/ InitList_Sq ElenTppe newbase,*p,q;
6、Status ListInsert_Sq(SqList &L,int i.ElenType e) i / i /,I I I1 onnf-h-*-l % of-unn POPAD -Status ListInsert_Sq(SqList &L tint i.ElenType e)|iF(iL.length+1) return ERROR;if(L.length=L.listsize)q=fc(L.elemi-1);For(p=&(L.elenL.length-1);p=q;p)*(p+1)=*p;*q=e; L .length;return OK;/ListInsert_SqStatus Li
7、stDelete_Sq(SqList &L,int i,ElemType &e)if(iL.length) return ERROR;p=&(L.elemi-1);e=P;q=L.elem*L.length-1;for(*p;p/ListDelete_Squoid main()SqList L;,i nt- S -int i;InitList_Sq(L);For(i=0;iL.listsize;i*+)For(iO;iL.length;i*) printFCd ,L .eleni);printf(n);ElemType e; scanF(%d%d,&i,&e);ListInsert_Sq(L,
8、i,e);for(i=0;iL.length;i+) printf(%d ,*(L.elem*i);printfCXn);ListDelete_Sq(L,i,e);For(i=0;iL.length;i*+) printf(%d ,*(L.elera*i);printfCXn);将源程序输入VC6.0Configuration: 1 - Win32 DebugCompiling.I.cpp|c:documents and settingsadninistrat:or1 ,cpp(仙):error C2065: OVERFLOW : undeclared identifierc:docuraen
9、ts and settingsadninistrator1.cpp(17) : error C2065: OK : undeclared identifier c:docun)ents and settingsadninistrator1.cpp(21) : error C206S: ERROR : undeclared identifier Error executing cl.exe.I.obj - 3 error(s), warning(s)发现有OVERFLOW : undeclared identifier,错误,是没有定义导致。加入宏替换定义OVERFLOW oConfigurat
10、ion: 1 - Win32 Debug Conpiling.1 .cpp1.obj - 0 error(s), 0 warning(s)编译之后没有发现语法错误Configuration: 1 - Win32 Debug Linking. 1.exe - 0 error(s), 0 warning(s)连接没问题,直接运行【实验结论】(结果)【实验小结】(收获体会)1 .实验要细心,认真。把数据结构书上的程序要输完整,否则程序运行不了。2 .注意每个语句不要遗漏分号。3 .除了主程序正确,程序的存储结构不要漏输进去。三、指导教师评语及成绩:评语评语等级优良中及 格不及 格1.实验报告按时完成
11、,字迹清楚,文字叙述流 畅,逻辑性强2.实验方案设计合理3,实验过程(实验步骤详细,记录完整,数据合 理,分析透彻)4实验结论正确.成绩:指导教师签名:批阅日期:附录1:源程序# include # include # def i ne TRUE 1# def i ne FALSE 0# def i ne OK 1# def i ne ERROR 0# def i ne INFEASIBLE -1# def i ne OVERFLOW -2typedef int Status;typedef int ElemType;# define LIST_INIT_SIZE 5线性表存储空间的初始分配量
12、# def i ne LI ST INCREMENT 10typedef struct (ElemType *eIem;int Iength;int Ii sts i ze;SqList;Status InitList_Sq(SqList &L)L. elem=(ElemType *)ma 11oc(LIST_INIT_SIZE*sizeof (ElemType);if (SL.elem) exit(OVERFLOW);L.length=0;L. Ii sts i ze=LI ST INIT SIZE;return OK;/ InitLi st_SqElemType *newbase, *p,
13、 *q;Status L i st Insert_Sq(SqL i st &L, int i, ElemType e) if (iL. length+1) return ERROR;if (L. Iength=L. I istsize) newbase= (ElemType*) reaI Ioc(L. eIem, (L. Iistsi ze+LIST INCREMENT)*s izeof (ElemType);if(!newbase)exit(OVERFLOW);L.eIem=newbase;L.Iistsize+=LISTINCREMENT;)q=& (L. elemi-1);for (p=
14、&(L. eIemL. Iength-1);p=q;p)*(p+1)=*p;*q=e;+L. length;return OK:/Listlnsert_SqStatus L i stDeIete_Sq(SqL i st &L, int i,ElemType &e)if(iL. Iength) return ERROR;p=& (L. elemi-1);e=*p;q=L. eIem+L. Iength-1;for (+p; p=q; +p) *(p-1)=*p;-L.length;return OK;/ListDeIete_Sqvoid main()SqList L;int i;I n i tL
15、 i st_Sq (L);for (i=0;i=L. Iistsize;i+) scanf (H%dH, &L. elemi);L. Iength+; for (i=0;iL. length;i+)pr intf (n%d n, L. elemi);pr intf (An);ElemType e;scanf (n%d%dn,&i,&e);List Insert_Sq (L, i,e);for(i=0;iL. length;i+)printf (H%d , *(L. elem+i);printf(HnH);scanf (M%d%dH,&i);ListDeIete_Sq(L, i, e);for(i=0;iL. length;i+)printf(H%d n, *(L. elem+i);