- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 顺序表的设计与实现
一.实验目的
1.进一步熟悉VC环境,会在其中编写调试运行c++代码,并理解多文件项目的组织,为以后的实验编程做准备。
2.掌握在VC环境中进行代码的调试
3.掌握顺序表的设计过程,并能通过一实例对设计的顺序表进行测试。
二、实验内容
1.顺序表的设计(Sqlist.h):设计头文件sqlist.h,其内容如下:
①类型设计
②基本操作的设计(包括初始化、求数据元素个数、插入、删除、取数据元素等)
(补充完整)
#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,验证所设计的顺序表的正确性。其内容如下:
①设计一个函数求解两个集合的并集。
②设计一个主函数。
#include iostream.h
typedef int ElemType;
#include SqList.h
void print(ElemType c)
文档评论(0)