- 17
- 0
- 约1.01万字
- 约 18页
- 2019-03-08 发布于江苏
- 举报
个人收集整理 仅供参考学习
个人收集整理 仅供参考学习
PAGE / NUMPAGES
个人收集整理 仅供参考学习
基于顺序表实现集合地并交差运算实验报告
一 实验题目: 基于顺序表实现集合地并交差运算
二 实验要求:
2.1:编写一个程序,实现顺序表地各种基本运算
(1)初始化顺序表h;
(2)依次采用尾插法插入a,b,c,d,e元素;
(3)输出顺序表h
(4)输出顺序表h地长度
判断顺序表h是否为空
输出顺序表h地第三个元素
输出元素在a地位置
在第4个元素位置上插入f元素
输出顺序表h
删除L地第3个元素
输出顺序表
释放顺序表
2.2:编写一个程序,采用顺序表表示集合(集合中不存在重复地元素),并将其按照递增地方式排序,构成有序顺序表,并求这样地两个集合地并,交和差.b5E2RGbCAP
三 实验内容:
3.1 线性表地抽象数据类型:
ADT List{
数据对象;D=
数据关系:R1=
基本操作:
InitList(L)
操作结果;构造一个空地线性表L
DestroyList(L)
初始条件:线性表L已存在
操作结果:销毁线性表L
ClearList(L)
初始条件:线性表L已存在
操作结果:将L置为空表
ListEmpty(L)
初始条件:线性表已存在
操作结果:若L为空表,则返回TRUE,否则返回FALSE
ListLength(L)
初始条件:线性表已存在
操作结果:返回L中数据元素地个数
GetElem(L,i)
初始条件:线性表已存在,1=i=ListLength(L)
操作结果:用e返回L中第i个数据元素地值
LocateElem(L,i,e)
初始条件:线性表已存在,用循环遍历整个线性表,如果e与线性表中地元素相同;
操作结果:用此时地i+1返回该元素在线性表地位序
ListInsert(L,i,e)
初始条件:线性表存在,1=i=ListLength(L)+1;
操作结果:在L中第i个位置之前插入新地数据元素,e,L地长度加1.
ListDelete(L,i,e)
初始条件:线性表L已存在且非空,1=i=ListLength(L);
操作结果:删除L地第i个数据元素,并用e返回其值,L地长度减1
}ADT List
3.2存储结构地定义;
#define maxn 50
typedef char Elemtype;
typedef struct
{
Elemtype data[maxn];
int length;
}Sqlist;
3.3基本操作实现:
void InitList(SqList *L)//初始化顺序表
{
L = (SqList *)malloc(sizeof(SqList));//用malloc动态申请一个顺序表地内存空间p1EanqFDPw
L-length = 0;
}
void DestroyList(SqList *L)
{
free(L);//释放指针L
}
bool ListEmpty(SqList *L)
{
return (L-length == 0);//length为0表示表空
}
int ListLength(SqList *L)
{
return (L-length);
}
void DispList(SqList *L)
{
int i;
if(ListEmpty(L)) return ;
for(i = 0;i L-length;i++)
{
printf(%c ,L-data[i]);
printf(\n);
}
}
bool GetElem(SqList *L,int i,ElemType e)
{
if(i 1||i L-length) return false;
e = L-data[i-1];
return true;
}
int LocateElem(SqList *L,ElemType e)
{
int i = 0;
while(i L-lengthL-data[i]!=e)
{
i++;
}
if(i = L-length) return 0;
else return i+1;
}
bool ListInsert(SqList *L,int i,ElemType e)
{
int j;
if(i 1||iL-length+1) return false;
i--;
for(j=L-length;ji;j--)
L-data[j]=L-data[j-1];
原创力文档

文档评论(0)