实验报告线性表的顺序表示和实现.docx

上传人:b****6 文档编号:2822656 上传时间:2022-11-15 格式:DOCX 页数:8 大小:95.71KB
下载 相关 举报
实验报告线性表的顺序表示和实现.docx_第1页
第1页 / 共8页
实验报告线性表的顺序表示和实现.docx_第2页
第2页 / 共8页
实验报告线性表的顺序表示和实现.docx_第3页
第3页 / 共8页
实验报告线性表的顺序表示和实现.docx_第4页
第4页 / 共8页
实验报告线性表的顺序表示和实现.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

实验报告线性表的顺序表示和实现.docx

《实验报告线性表的顺序表示和实现.docx》由会员分享,可在线阅读,更多相关《实验报告线性表的顺序表示和实现.docx(8页珍藏版)》请在冰豆网上搜索。

实验报告线性表的顺序表示和实现.docx

实验报告线性表的顺序表示和实现

 

数学与计算科学学院

实验报告

实验项目名称:

线性表的顺序表示和实现

所属课程名称:

数据结构A

实验类型:

验证性

实验日期:

2012年4月5号

班级:

学号:

姓名:

成绩:

一、实验概述:

【实验目的】

(1)、线性表的逻辑结构特征。

①、总存在第一个和最后一个元素。

②、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素。

③、除最后一个元素以外,每一个元素总存在唯一一个直接后驱元素。

(2)、顺序表的特征。

①、逻辑关系上相邻的物理位置上也相邻。

②、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址。

(3)、通过上机实验验证线性表的顺序结构的正确性,了解算法与程序的区别。

【实验原理】

//--------线性表的动态分配顺序存储结构-----------

#defineLIST_INIT_SIZE5//线性表存储空间的初始分配量

#defineLISTINCREMENT2//线性表存储空间的分配增量

typedefstruct{

ElemType*elem;//存储空间基址

intlength;//当前长度

intlistsize;//当前分配的存储容量(以sizeof(ElemType)为单位)

}SqList;

【实验环境】

实验的环境:

VC++

二、实验内容:

【实验方案】

编写主函数,调用初始化,建立顺序表的算法以及插入和删除算法。

调试

运行输入数据得出结果并进行分析。

【实验过程】(实验步骤、记录、数据、分析)

实验步骤:

(1)、在VC++环境下输入各个算法和主函数。

(2)、输完以上的东西后,再对程序进行编译。

编译完后主要出现以下几个主要错误:

①、算法和函数中出现了一些系统无法识别的变量,照成程序出现了错误。

②、程序中出现了这样的错误:

D:

\软件\MicrosoftVisualC++V6.0简体中文企业版\Cpp1.cpp(50):

errorC2018:

unknowncharacter'0xa3

③、程序中的错误:

D:

\软件\MicrosoftVisualC++V6.0简体中文企业版\Cpp1.cpp(8):

errorC2144:

syntaxerror:

missing';'beforetype'int'

④、在程序中还出现了大量的输入的错误。

比如大小写的问题,前后的

函数名不一致的问题等等。

编译完成以后,接下来是找到错误进行调试。

调试过程中找出错误的原因,然后进行分析。

发生错误的主要原因如下:

①、在输入程序的过程中由于粗心造成了大量的输入错误。

②、没有注意算法与源程序的区别。

算法是简单的对源程序进行描述的,是给人阅读的,所以有些变量没有定义我们就能看懂。

而程序中的变量一定要先定义才能够被引用,才能被计算机识别。

③、强制类型转换也是C语言中的一个语句,所以语句完成以后后面要加分号来表示语句结束。

所以才会出现第三的错误。

④、在C程序的输入过程中。

一律要在英文字母的条件下进行输入,否则就会出现第二种错误,使系统无法识别。

(3)、调试完成以后,程序中没有了错误。

然后执行。

在命令窗口中输入数据进行验证。

出现了如下图所示的错误:

在进行删除的算法的过程中,最后那个数字“5”出现了两次,与实验要求的结果不一致。

后来经老师的指点,找出了原因的所在。

原因:

在执行删除算法以后,变长要减1.经改正以后得出了正确的结论。

最后成功完成了实验,得出了正确的结果。

【实验结论】(结果)

实验的结果如下图:

【实验小结】(收获体会)

第一点:

在变写算法和程序的过程是一个心细的过程,一定要注意每一个细节,

要不然就会出现很多错误,得不到自己想要的结果。

第二点:

要熟练的掌握有关C语言的知识,要充分明白算法与程序的区别,在

编写程序的过程中要保持清醒的头脑,时刻注意那些容易出错的地

方。

第三点:

每次进行删除算法之后表长都要减一。

否则会造成数据冗余,浪费

内存。

第四点:

最终的收获是我已经掌握了顺序表的建立及相关算法的操作。

三、指导教师评语及成绩:

评语

评语等级

及格

不及格

1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强

2.实验方案设计合理

3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)

4实验结论正确.

成绩:

指导教师签名:

批阅日期:

附录1:

源程序

#include

#include

#defineOK1

#defineERROR0

#defineINFEASIBLE-1

#defineOVERFLOW-2

typedefintStatus;

typedefintElemType;

#defineLIST_INIT_SIZE5//初始分配存储量

#defineLISTINCREMENT2//分配增量

typedefstruct{

ElemType*elem;//存储空间基址

intlength;//当前长度

intlistsize;//当前分配存储量

}Sqlist;

StatusInitList_Sq(Sqlist&L){

//构造一个空的线性表L

L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if(!

L.elem)exit(OVERFLOW);//存储分配失败

L.length=0;//空表长度为0

L.listsize=LIST_INIT_SIZE;//初始存储容量

returnOK;

}

StatusListInsert_Sq(Sqlist&L,inti,ElemTypee){

//在线性表L中第i个元素之前插入元素e,i的合法值为1<=i<=ListLength_Sq(L)+1

ElemType*newbase,*p,*q;//定义变量p,q

if(i<1||i>L.length+1)returnERROR;//i值不合法

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]);//q为插入位置

for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;

*q=e;

++L.length;//插入e,表长增1

returnOK;

}

StatusListDelete_Sq(Sqlist&L,inti,ElemType&e){//在线性表L中删除第i个元素,并用e返回其值,i的合法值为1<=i<=ListLength_Sq(L)

ElemType*p,*q;//定义变量p,q

if((i<1)||(i>L.length))returnERROR;//i值不合法

p=&(L.elem[i-1]);//p为被删除元素位置

e=*p;//被删除元素值赋给e

q=L.elem+L.length-1;//表尾元素的位置

for(++p;p<=q;++p)*(p-1)=*p;//后面元素左移

--L.length;//表长减1

returnOK;

}

voidmain()

{SqlistL;inti;InitList_Sq(L);//构造一个空的线性表L

for(i=0;i

{scanf("%d",&L.elem[i]);

++L.length;}//输入数据

for(i=0;i

//输出表中的数据

printf("\n");

ElemTypee;scanf("%d""%d",&i,&e);

ListInsert_Sq(L,i,e);

//在线性表L中第i个元素之前插入元素e

for(i=0;i

printf("%d",L.elem[i]);//输出新的线性表中的数据

printf("\n");

scanf("%d",&i);ListDelete_Sq(L,i,e);

//在线性表L中删除第i个元素,并用e返回其值

for(i=0;i

//输出新的线性表表中的数据

printf("\n");

printf("e=%d\n",e);

}

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1