ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:95.71KB ,
资源ID:2822656      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2822656.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告线性表的顺序表示和实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、实验报告线性表的顺序表示和实现数学与计算科学学院实 验 报 告实验项目名称 :线性表的顺序表示和实现 所属课程名称 : 数据结构A 实 验 类 型 : 验证性 实 验 日 期 : 2012年4月5号 班 级 : 学 号: 姓 名: 成 绩 : 一、实验概述:【实验目的】(1)、线性表的逻辑结构特征。 、总存在第一个和最后一个元素。 、除第一个元素以外,每一个元素总存在唯一一个直接前驱元素。 、除最后一个元素以外,每一个元素总存在唯一一个直接后驱元素。(2)、顺序表的特征。 、逻辑关系上相邻的物理位置上也相邻。 、是一种随机存储结构,可以用一个简单直观的公式来表示每一个元素的地址。(3)、通过上

2、机实验验证线性表的顺序结构的正确性,了解算法与程序的区别。【实验原理】/-线性表的动态分配顺序存储结构-#define LIST_INIT_SIZE 5 /线性表存储空间的初始分配量#define LISTINCREMENT 2 /线性表存储空间的分配增量typedef struct ElemType *elem; /存储空间基址 int length; /当前长度 int listsize; /当前分配的存储容量(以sizeof(ElemType)为单位)SqList;【实验环境】 实验的环境:VC+二、实验内容:【实验方案】 编写主函数,调用初始化,建立顺序表的算法以及插入和删除算法。调试

3、运行输入数据得出结果并进行分析。【实验过程】(实验步骤、记录、数据、分析)实验步骤:(1)、在VC+环境下输入各个算法和主函数。(2)、输完以上的东西后,再对程序进行编译。编译完后主要出现以下几个主要错误: 、算法和函数中出现了一些系统无法识别的变量,照成程序出现了错误。 、程序中出现了这样的错误:D:软件Microsoft Visual C+ V6.0 简体中文企业版Cpp1.cpp(50) : error C2018: unknown character 0xa3、程序中的错误:D:软件Microsoft Visual C+ V6.0 简体中文企业版Cpp1.cpp(8) : error

4、C2144: syntax error : missing ; before type int、在程序中还出现了大量的输入的错误。比如大小写的问题,前后的函数名不一致的问题等等。 编译完成以后,接下来是找到错误进行调试。调试过程中找出错误的原因,然后进行分析。 发生错误的主要原因如下: 、在输入程序的过程中由于粗心造成了大量的输入错误。、没有注意算法与源程序的区别。算法是简单的对源程序进行描述的,是给人阅读的,所以有些变量没有定义我们就能看懂。而程序中的变量一定要先定义才能够被引用,才能被计算机识别。、强制类型转换也是C语言中的一个语句,所以语句完成以后后面要加分号来表示语句结束。所以才会出现

5、第三的错误。、在C程序的输入过程中。一律要在英文字母的条件下进行输入,否则就会出现第二种错误,使系统无法识别。 (3)、调试完成以后,程序中没有了错误。然后执行。在命令窗口中输入数据进行验证。出现了如下图所示的错误: 在进行删除的算法的过程中,最后那个数字“5”出现了两次,与实验要求的结果不一致。后来经老师的指点,找出了原因的所在。 原因:在执行删除算法以后,变长要减1.经改正以后得出了正确的结论。最后成功完成了实验,得出了正确的结果。【实验结论】(结果)实验的结果如下图:【实验小结】(收获体会)第一点:在变写算法和程序的过程是一个心细的过程,一定要注意每一个细节,要不然就会出现很多错误,得不

6、到自己想要的结果。第二点:要熟练的掌握有关C语言的知识,要充分明白算法与程序的区别,在编写程序的过程中要保持清醒的头脑,时刻注意那些容易出错的地方。 第三点:每次进行删除算法之后表长都要减一。否则会造成数据冗余,浪费内存。第四点:最终的收获是我已经掌握了顺序表的建立及相关算法的操作。三、指导教师评语及成绩:评 语评语等级优良中及格不及格1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确. 成 绩: 指导教师签名: 批阅日期:附录1:源 程 序#include#include#define OK 1#

7、define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2 typedef int Status; typedef int ElemType;#define LIST_INIT_SIZE 5 / 初始分配存储量#define LISTINCREMENT 2 /分配增量 typedef struct ElemType *elem; /存储空间基址 int length; /当前长度 int listsize; /当前分配存储量 Sqlist; Status InitList_Sq(Sqlist &L) / 构造一个空的线性表L L.elem=(E

8、lemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L.elem) exit(OVERFLOW); /存储分配失败 L.length=0; /空表长度为0 L.listsize=LIST_INIT_SIZE; /初始存储容量 return OK; Status ListInsert_Sq(Sqlist &L,int i, ElemType e) / 在线性表L中第i个元素之前插入元素e, i的合法值为1= i = ListLength_Sq(L)+1 ElemType *newbase ,*p,*q; /定义变量p,q if(iL.len

9、gth+1) return ERROR; / 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.elemi-1); / q为插入位置 for(p=&(L.elemL.length-1);p=q;

10、-p) *(p+1)=*p; *q=e; +L.length; / 插入e,表长增1 return OK; Status ListDelete_Sq(Sqlist &L,int i, ElemType &e)/ 在线性表L中删除第i个元素,并用e返回其值,i的合法值为1= i = ListLength_Sq(L) ElemType *p,*q; /定义变量p,q if(iL.length) return ERROR; / i值不合法 p=&(L.elemi-1); / p为被删除元素位置 e=*p; / 被删除元素值赋给e q=L.elem+L.length-1; / 表尾元素的位置 for(

11、+p;p=q;+p) *(p-1)=*p; / 后面元素左移 -L.length; / 表长减1 return OK; void main() Sqlist L; int i; InitList_Sq(L); / 构造一个空的线性表L for (i=0;iL.listsize;i+) scanf(%d,&L.elemi); +L.length;/输入数据 for(i=0;iL.listsize;i+)printf(%d ,*(L.elem+i); /输出表中的数据 printf(n); ElemType e;scanf(%d%d,&i,&e); ListInsert_Sq(L,i,e);/ 在线性表L中第i个元素之前插入元素e for(i=0;iL.length;i+) printf(%d ,L.elemi);/输出新的线性表中的数据 printf(n); scanf(%d,&i);ListDelete_Sq(L,i,e); / /在线性表L中删除第i个元素,并用e返回其值for(i=0;iL.length;i+)printf(%d ,L.elemi);/输出新的线性表表中的数据 printf(n); printf(e=%dn,e);

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

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