数据结构线性表的顺序表示和实现的实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与计算科学学院
实验报告
实验项目名称线性表的顺序表示与实现
所属课程名称数据结构_________
实验类型验证型___________
实验日期___________________________
班级___________________________
学号___________________________
姓名___________________________
成绩___________________________ 实验概述:
#defi ne LIST_INIT_SIZE 9 II线性表存储空间的初始分配量
#defi ne LISTINCREMENT 2 II 线性表存储空间的分配增量
typedef struct{
ElemType * elem;// 存储空间基址
int len gth;II 当前长度
int listsize;// 当前分配的存储容量(以sizeof ( ElemType)为单位)
}SqList;
【实验环境】
VC++6.0
、【实验容】
【实验方案】
编写主函数,调用顺序表的初始化建空表,插入和删除算法,调试运行得出结果
【实验过程】(实验步骤、记录、数据、分析)
8.先将线性表的动态分配顺序存储结构,算法与主函数编入VC++6.0中
return OK; }
void mai n() {
SqList L;
int i;
In itList_Sq(L); for(i=0;i<LIST_INIT_SIZE;i++)
{
sca nf("%d",&L.elem[i]);
L.len gth++;
}
for(i=0;i<L .len gth;i++) prin tf("%d ", L.elem[i]);
prin tf("\n");
ElemType e;
scan f("%d%d",&i,& e);
List In sert_Sq(L,i,e); for(i=0;i<L .len gth;i++) prin tf("%d ", L.elem[i]);
prin tf("\n"); scan f("%d",&i);
ListDelect_Sq(L,i,e); for(i=0;i<L .len gth;i++) prin tf("%d ", L.elem[i]);
prin tf("\n");
}
2. 调试第一次出现的错误:
:error C2143: syntax error : missing b ;' before :error C25B1: ,ElemTi|pe , : nissing storage-class or type specifiers :error C2?: 'elen h : missing storage-class or typ 色 specifiers :error C2146: syntax error : missing h ;* before identifier b InitList_Sq :error C2501: 'Status' : nissling storage-class or type specifiers
:fatal error C1O0II : unexpected end of file found
原因:由于许多变量未定义,以及没有头文件与宏定义所以错误许多,还有更多错
误没有显示出来
3. 将以下语句编入程序中:
#i nclude "stdio.h"
#in elude "stdlib.h"
#defi ne TRUE 1
#defi ne FALSE 0
#defi ne OK 1
#defi ne ERROR 0
#defi ne INFEASIBLE -1
#defi ne OVERFLOW -2
#defi ne LIST_INIT_SIZE 9
#defi ne LISTINCREMENT 2 typedef int ElemType; typedef int Status;
4. 调试第二次出现以下错误:cpp(3)
cpp(3)
cpp(9)
cpp(8)
cpp(S) cpp(8)
.cpp(36) : error C2D65: 'neubase' :
undeclared identifier .cpp(30) :
error c?44D :'=' reinterpret cast T a C-stule -cpp(38> : error C2440: '=' pe to pointer type requires »c (ip(<i1> : error C2 065: 'q ' : error CZ^O:'=' rpjntprprpt_c^st , A r-styl f .cpp(>i2) : error C2B65: -匚; tr* ar CZ^O; * = * reinterpretcast, a C-style
PS a reinterpret_cast, a C-st (jle cast or function-style cast ^asfvs .cpp(?2) : error C201S: unknown character 1 Oital 1 ^asfus.cpp(?2) : error C261S: unknown character 10Ma11
character character character character indirection ':cannot concert from * int *' to * int 1 a reinterpret _cast, a C-5ty 1e cast or function-style cast
F U 5.cpp(55^ : error G71on : illegai indirection F U 5.cpp(551 : error C2100: illegal indirection
Fus_cpp(55J : error C2106: ' =b : left op^r^nd must b? L-ualwp 原因:是在每个算法中有许多变量未定义,导致许多错误
5.再将语句:
int *n ewbase;
int *q;
int *p;
写入插入算法中;
将语句:
int *p; FUS .cpp(52J
error C2018: FU5-cpp(S2)
error C201B: FUS ,cpp(52)
error C2S18: FUS .cpp(52)
error C2018: Fus_cpp(52)
error C2100: F YS <cpp(53) error C2440:
:cannot conuert i-rcn -lnt *' to ■ lnr' cast or Function-st^le cast
:cannot ccnuert From 'int ' to 'int *'
rein terpret_cast T G-style ca^t cr runction-stylc cost :undeclared identifier :cannot conuert fren 'int *' to 'int' CAst nr Fiinction-stiile :undeclared identifier :cdimul cunuerI fruri r inl ** Lu 'int' cast or Furction-stiile cast
*ec a reinterpret cast , a C-Gtyle cast or Funetion-style kds :Fus .cppC^):
•叩p"2); us.cppfU3): Lasfus.cppC?1): .cppC?1): ^□sFvs ・<;pp(51): ws ;F" ■cppB'l 》: 、恥Fvcp 卩(曰): error error
error error error error error error error C2^190: illegal indirection C21B0; illegal indirection C210A; '=' : left operand nust be 1-ualue C210B: illegal C2 01S : C2618: C2O13; C2619: C2HH0: unknown unknown unknown unknown indirection character character character character ■ meal 1 ■sxai 1 'CKdl 1
■Sxal ■ '■ : cannot convert fron 'int »* to 'int'
'Awal' *1 11 'Ma1' unknoun unknouin unknoun unknoun illegal
int *q;
写入删除算法中;
6.调试第三次显示没有错误:
Conpiling・・・
□5fU5.cpp
.obj - O 业奇尸(主>,0 warning(弓)
7.运行第一次显示结果为:
・已\件品剧謝琳序\草希所霸Debug、」a
1234 678 56789
8•但运行后的界面显得很单调;要是忘记下一个算法是什么就容易输入出错,也不适合大众使用;因此为了将程序优化,所以在主函数中增加以下输入输出语句和条件语句;为了让程序更加严谨,因此还加入一些循环语句。
int i,p,q;
p=2,q=2;
printf(”请输入您想构建的顺序表(元素为%d个):\n",LIST_INIT_SIZE);
main ()
{
SqList L;
int i,p,q;
p=2,q=2;
In itList_Sq(L);
printf(" 请输入您想构建的顺序表(元素为%d个):\n",LIST_INIT_SIZE);
for(i=0;i<LIST_INIT_SIZE;i++)
{
prin tf("%d\n",e); printf(”形成的新顺序表为:\n");
for(i=0;i<L」en gth;i++) prin tf("%d ", L.elem[i]);
prin tf("\n ”);
return 0;
}
10.调试第四次显示没错误:
Conplling«.・2雪Fu%.cpp
_obj - S error(s) f fl uarning(s)
11.运行第二次显示结果为:
12.运行第三次显示结果为:
■・H:\Debug\^fe«<]l(^ra示导现号灼・1匚冋i-l]
请端入您想构建的顺序表(兀素为卩个〕二
12 334 5? 5 3 53fr 7 4 7
隆构建的顺序裏是:詁入您想在第几个元素位置前插入施
黑入的数字错误,(只剩下2次重新输入符合要求的数字的机会)—
63
躺入的数宇错误’(只剩下1次重新输入符合要求的数宇的机会)
扫输入您想插入的数:
3234
恥成的新顺序表为:
12 334 53 S 3 3234 536 ? 4 7
请输入您憩刪除的是第几个元素二
也入的数字错误,(只剩下2次重新输入符合要求的数字的机会)
审入的数字错误.(只剩下破重新输入符合要求的数字的机会)触爾
聘求劇字的机会)
誓寻any kuy to comtinu&H
13.运行第四次显示结果为:
' H:\D比旧假性春旳(Z序表示与实现启灼
请綁入您想构建的顺序表(元素为*个〕=
12 3 4 9
您构建的顺序表是三
L234SG789
请端入您想在第几个元素位暨前插入元素:
18
输入的数字惜误’(只剩下2次重新输入符合要求的数字的机会)
诂入的数字惜误’(只剩下氓畫新输入符合要求的数字的机会)穆输入您想插入的数匕
形成的新顺序恙为=
十5s *1 4 t Qi aa c Q Q
舊输入您想删除的是第几个元素=
站人的数字诸误•■:側卜酣重新输人符合要求珂淳的机会)
俞入的数宇错误,(只剩下丄袂重新输入符合要求的数宇的机会)
赊的数为=
形成的新顺序表为:
1 2 3 4 S 6193 7 8 ?
Press 讯口岁k&y to continue
押i
这样那么程序就完整了,清晰明了,用户运行的时候也容易知道自己要输入什么了【实验结论】(结果)
指导教师签名:
批阅日期: 附录1源程序
printf(”删除的数为:\n");
prin tf("%d\n",e);
printf(”形成的新顺序表为:\n");
for(i=0;i<L」en gth;i++)
prin tf("%d ", L.elem[i]);
prin tf("\n");
return 0;
}
附录2:实验报告填写说明
1实验项目名称:要求与实验教学大纲一致。
2 •实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。
3 •实验原理:简要说明本实验项目所涉及的理论知识。
4.实验环境:实验用的软、硬件环境。
5•实验方案(思路、步骤和方法等):这是实验报告极其重要的容。
概括整个实验过程。
对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。
对于设计性和综合性实验,在上述容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。
对于创新性实验,还应注明其创新点、特色。
6•实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7 •实验结论(结果):根据实验过程中得到的结果,做出结论。
&实验小结:本次实验心得体会、思考和建议。
9 •指导教师评语及成绩:指导教师依据学生的实际报告容,给出本次实验报告的评价。