还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
沙理工数学与计算科学学院实验报告实验项目名称:线性表的顺序表示和实现所属课程名称:数据结构A实验类型:验证性实验日期:2012年4月5号班级:信管10-02班学号201044070218姓名张松涛成绩附录2实验报告填写说明
1.实验项目名称要求与实验教学大纲一致
2.实验目的目的要明确,要抓住重点,符合实验教学大纲要求
3.实验原理简要说明本实验项目所涉及的理论知识
4.实验环境实验用的软、硬件环境
5.实验方案(思路、步骤和方法等)这是实验报告极其重要的内容概括整个实验过程对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明对于创新性实验,还应注明其创新点、特色
6.实验过程(实验中涉及的记录、数据、分析)写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析
7.实验结论(结果)根据实验过程中得到的结果,做出结论
8.实验小结本次实验心得体会、思考和建议
9.指导教师评语及成绩指导教师依据学生的实际报告内容,给出本次实验报告的评价【实验目的】
1、线性表的逻辑结构特征
①、总存在第一个和最后一个元素
②、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素
③、除最后一个元素以外,每一个元素总存在唯一一个直接后驱元素
2、顺序表的特征
①、逻辑关系上相邻的物理位置上也相邻
②、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址3学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算【实验原理】ttdefine LISTINIT SIZE5〃线性表存储空间的初始分配量ttdefine LISTINCREMENT2//线性表存储空间的分配增量//------------线性表的动态分配顺序存储结构ElemType*elem;〃存储空间基址Typedef struct{int length;//当前长度int listsize;〃当前分配的存储容量以sizeof ElemType为单位}SqList;【实验环境】实验的环境VC++
二、实验内容【实验方案】编写主函数,调用初始化,建立顺序表的算法以及插入和删除算法调试运行输入数据得出结果并进行分析【实验过程】(实验步骤、记录、数据、分析)^includestdio.httincludestdlib.httdefineTRUE1KdeFineFALSE0ttdefineOK1ttdefineERRORQttdefineINFEASIBLE-1typedefintStatus;typedefintElenType;〃线性表存储空间的初始分配量ttdefineLIST_INIT_SIZE5ttdefineLISTINCREMENT10typedefstructElenType*elen;intlength;intlistsize;SqList;StatusInitList_SqSqListLL.elen=ElenType*nallocLIST_INIT_SIZE*sizeofElenType;ifL.elemexitOUERFLOW;L.length-O;L.listsize=LIST_INIT_SIZE;returnOK;}//InitList_Sq ElenTppe»newbase,*p,«q;StatusListInsert_SqSqListL,inti.ElenTypee■i/i/,III1onnf-h-*-l%^of-unnPOPAD-StatusListInsert_SqSqListLtinti.ElenTypee{|iFi1||iL.length+1returnERROR;ifL.length=L.listsizenevjbase-ElenType»reallocL.elen,L.listsize♦LISTINCREMENT»sizeoFElenType;ifnewbaseexitOUERFLOW;L.elen=newbase;;L.listsize+=LISTINCREMENTq=fcL.elem[i-1];Forp=L.elen[L.length-1];p=q;—p*p+1=*p;*q=e;♦♦L.length;returnOK;//ListInsert_SqStatusListDelete_SqSqListL,inti,ElemTypee{ifi1||iL.lengthreturnERROR;p=L.elem[i-1];;e=»Pq=L.elem*L.length-1;for**p;p-q;*+p»p-1-»p;-L.length;returnOK;//ListDelete_SquoidmainSqListL;,int-S-inti;InitList_SqL;Fori=0;i»L.listsize;i*+scanF%d,6L.elen[i];L.length++;ForiO;iL.length;i♦*printFC^d,L.elen[i];printf\n;ElemTypee;scanF%d%d,i,e;ListInsert_SqL,i,e;fori=0;iL.length;i++printf%d,*L.elem*i;printfCXn;ListDelete_SqL,i,e;Fori=0;iL.length;i*+printf%d,*L.elera*i;printfCXn;VC
6.0将源程序输入Configuration:1-Win32DebugCompiling...I.cpp仙|c:\documentsandsettings\adninistrat:or\1,cpp errorC2065:OVERFLOW:undeclaredidentifierc:\docuraentsandsettings\adninistrator\
1.cpp17:errorC2065:‘OK:undeclaredidentifierc:\docun entsandsettings\adninistrator\
1.cpp21:errorC206S:ERROR:undeclaredidentifierErrorexecutingcl.exe.I.obj-3errors,@warningsOVERFLOW:undeclared identifier,发现有错误,是没有定义导致OVERFLOW o加入宏替换定义Configuration:1-Win32Debug Conpiling...
1.cpp
1.obj-0errors,0warnings编译之后没有发现语法错误Configuration:1-Win32DebugLinking...
1.exe-0errors,0warnings连接没问题,直接运行【实验结论】(结果)【实验小结】(收获体会)
1.实验要细心,认真把数据结构书上的程序要输完整,否则程序运行不了
2.注意每个语句不要遗漏分号
3.除了主程序正确,程序的存储结构不要漏输进去
三、指导教师评语及成绩:评语等级评语优良中及格不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强
2.实验方案设计合理3,实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.成绩指导教师签名批阅日期附录1:源程序#include stdio.h#include stdIib.h#def ine TRUE1#def ine FALSE0#def ine OK1#def ine ERROR0#def ine INFEASIBLE-1#def ine OVERFLOW-2typedef intStatus;typedef intElemType;#define LIST_INIT_SIZE5〃线性表存储空间的初始分配量#def ine LI ST INCREMENT10typedef structElemType*eIem;int Iength;int Ii sts i ze;}SqList;Status InitList_SqSqList L{L.elem=ElemType*ma11ocLIST_INIT_SIZE*sizeof ElemType;if SL.elem exitOVERFLOW;L.length=0;L.Ii stsize=LISTINIT SIZE;return OK;}//InitLi st_SqElemType*newbase,*p,*q;Status Li stInsert_SqSqL ist L,int i,ElemType e{if i111iL.length+1return ERROR;if L.Iength=L.I istsize{newbase=ElemType*reaI IocL.eIem,L.Iistsi ze+LIST INCREMENT*s izeofElemType;if!newbaseexitOVERFLOW;L.eIem=newbase;L.Iistsize+=LISTINCREMENT;q=L.elem[i-1];for p=L.eIem[L.Iength-1];p=q;—p*p+1=*p;*q=e;++L.length;return OK}//Listlnsert_SqStatus Li stDeIete_SqSqL ist L,int i,ElemType e{ifi1||iL.Iength returnERROR;p=L.elem[i-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 ni tList_Sq L;for i=0;i=L.Iistsize;i++{scanf H%dH,L.elem[i];L.Iength++;}for i=0;iL.length;i++pr intfn%d n,L.elem[i];pr intfAn;ElemType e;scanf n%d%dn,i,e;List Insert_Sq L,i,e;fori=0;iL.length;i++printf H%d,*L.elem+i;printfH\nH;scanf M%d%dH,i;ListDeIete_SqL,i,e;fori=0;iL.length;i++printfH%d n,*L.elem+i;。