1、抽象数据类型线性表的定义如下:
ADT List{
数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}
数据关系: R1={i-1,ai>| ai-1,ai(- D,i=2,...,n}
基本操作:
InitList(&.L)
DestroyList(&.L)
ClearList(&.L)
ListEmpty(L)
ListLength(L)
GetElem(L,i,&.e)
LocateElem(L,e,compare())
PriorElem(L,cur_e,&.pre_e)
NextElem(L,cur_e,&.next_e)
ListInsert(&.L,i,e)
ListDelete(&.L,i,&.e)
ListTraverse(L,visit())
union(List &.La,List &.Lb)
}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 ) 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