数据结构-线性
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的抽象数据类型定义与类C实现
? 抽象数据类型线性表的定义如下:
ADT List{
数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}
数据关系: R1={
| ai-1,ai(- D,i=2,...,n}
基本操作:
InitList(&L)
操作结果:构造一个空的线性表L。
DestroyList(&L)
初始条件:线性表已经存在。
操作结果:销毁线性表L。
ClearList(&L)
初始条件:线性表已经存在。
操作结果:将L重置为空表。
ListEmpty(L)
初始条件:线性表已经存在。
操作结果:若L为空表,则返回TRUE,否则返回FALSE。 ListLength(L)
初始条件:线性表已经存在。
操作结果:返回L中数据元素的个数。 GetElem(L,i,&e)
初始条件:线性表已经存在,1<=i<=ListLength(L).
操作结果:用e返回第i个数据元素的值。 LocateElem(L,e,compare())
初始条件:线性表已经存在,compare()是数据元素的判定函数。
操作结果:返回L中第1个与e满足关系compare()的数据元素的位序,若这样的数据元素不存在则返回
值为0。
PriorElem(L,cur_e,&pre_e)
初始条件:线性表已经存在。
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则
操作失败,pre_e 无定义
NextElem(L,cur_e,&next_e)
初始条件:线性表已经存在。
操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,
否则操作失败,
next_e无定义
ListInsert(&L,i,e)
初始条件:线性表已经存在,1<=i<=ListLength(L)+1.
操作结果:在L中第i个元素位置之前插入新的数据元素e,L的长度加1。
ListDelete(&L,i,&e)
初始条件:线性表已经存在且非空,1<=i<=ListLength(L).
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。
ListTraverse(L,visit())
初始条件:线性表已经存在。
操作结果:依次对L的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。
}ADT List
2、部分操作的类C实现:
InitList(&L)
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem)exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
}//InitList
GetElem(L,i,&e)
{ *e=L.lem[i]
}//GetElem
ListInsert(List &L,int i,ElemType e)
{ if(i<1||i>L.length+1) return ERROR;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e;
++L.length;
return OK;
}//ListInsert
void union(List &La,List &Lb)
//利用两个线性表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A?B。
La_len=ListLength(La);Lb_len=ListLength(Lb); for(i=1;i<=Lb_len;i++){
GetElem(Lb,i,e);
if(!LocateElem(La,e,equal))
ListInsert(La,++La_len,e);
}//union
void MergeList(List La,List Lb,List &Lc)
//巳知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为
一个新的线性表LC,且LC中的元素仍按值非递减有序排列。
{ InitList(Lc);
i=j=1;k=0;
La_len=ListLength(La);Lb_len=ListLength(Lb); while((i<=La_len)&&(j
本文档为【数据结构-线性表的抽象数据类型定义与类C实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。