实验一顺序表的设计与实现.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一顺序表的设计与实现

PAGE PAGE 3 实验一 顺序表的设计与实现 一.实验目的 1.进一步熟悉VC环境,会在其中编写调试运行c++代码,并理解多文件项目的组织,为以后的实验编程做准备。 2.掌握在VC环境中进行代码的调试 3.掌握顺序表的设计过程,并能通过一实例对设计的顺序表进行测试。 二、实验内容 1.顺序表的设计(Sqlist.h):设计头文件sqlist.h,其内容如下: = 1 \* GB3 ①类型设计 = 2 \* GB3 ②基本操作的设计(包括初始化、求数据元素个数、插入、删除、取数据元素等) (补充完整) #define LIST_INIT_SIZE 10 #define LIST_INCREMENT 2 //线性表的动态分配顺序存储结构 struct SqList { ElemType *elem; int length; int listsize; }; //顺序表的初始化 void InitList(SqList L) { //动态分配存储空间,并将分配到的存储空间的首地址保持在顺序表的elem项中 L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); //将顺序表的长度初始化为0 L.length=0; //将顺序表的容量初始化为分配的空间数 L.listsize=LIST_INIT_SIZE; } //在线性表的第i个位置上插入数据元素e Status ListInsert(SqList L,int i,ElemType e) { ElemType *newbase,*q,*p; //判断插入的位置是否合理,不合理则返回错误信息 if(i1||iL.length+1) return ERROR; //判断是否有足够的空间插入元素,空间不够则增补空间 if(L.length==L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+LIST_INCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LIST_INCREMENT; } //插入数据元素(先将第i个元素及其后所有元素后移一个位置) q=L.elem+i-1; for(p=L.elem+L.length-1;p=q;--p) *(p+1)=*p; //将元素e插入到第i个位置 *q=e; //线性表的长度增加1 ++L.length; return OK; } //删除线性表中第i个数据元素 Status ListDelete(SqList L,int i,ElemType e) { ElemType *p,*q; //判断删除的元素是否存在,不存在则返回错误信息 if(i1||iL.length) return ERROR; //将第i+1个元素及其后所有元素前移一个位置,实现元素的删除 p=L.elem+i-1; e=*p; q=L.elem+L.length-1; for(++p;p=q;++p) *(p-1)=*p; //删除元素后,线性表的长度减1 L.length--; //返回操作成功的提示信息 return OK; } //在顺序表中找给定元素值e的元素是否存在。存在则返回其位序,不存在返回0 int Locate(SqList L,ElemType e) { //依次访问顺序表中的数据元素,并和e做比较,若相等则放回其位序,否则返回0 for(int i=0;iL.length;i++) if(L.elem[i]==e) return i+1; return 0; } //遍历线性表 void ListTraverse(SqList L,void(*visit)(ElemType)) { ElemType *p=L.elem; int i; for(i=1;i=L.length;i++) visit(*p++); coutendl; } 2.测试:设计测试文件test.cpp,验证所设计的顺序表的正确性。其内容如下: = 1 \* GB3 ①设计一个函数求解两个集合的并集。 = 2 \* GB3 ②设计一个主函数。 #include iostream.h

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档