线性表1

    线性表是一种数据结构,一个线性表是n个数据元素得有限序列,在稍复杂得线性表中,一个数据元素(书目信息)可以由若干个数据项(书名,作者名...)组成,这种情况下,把数据元素称为记录

  抽象数据类型线性表的定义如下:
ADT List{
  数据对象:一般是数据元素得集合
  数据关系:数据元素之间的关系
  基本操作:
    InitList(&L)
    操作结果:构造一个空的线性表L


    DestroyList(&L)
    初始条件:线性表L已存在
    操作结果:销毁L


    ClearList(&L)
    初始条件:线性表L已存在
    操作结果:将L重置为空表


    GetElem(L,i,&e)    //得到某个数据元素
    初始条件:L已存在,1<=i<=listLength(L)
    操作结果:用e返回L中第i个数据元素得值


    LocateElem(L,e,compare())    //得到某个数据元素得位置
    初始条件:L已存在,compare()是数据元素判定函数
    操作结果:返回L中第一个与e满足关系compare()得数据元素位序,若这样得数据元素不存在,则返回值为0


    ListInsert(&L,i,e)
    初始条件:L已存在,1<=i<=ListLength(L)+1
    操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1


    ListDelete(&L,i,&e)
    初始条件:L已存在且非空,1<=i<=ListLength(L)
    操作结果:删除L中的第i个数据元素,并用e返回其值,L的长度减1


    ListTraverse(L,visit())
    初始条件:L已存在
    操作结果:依次对L的每个数据元素调用函数visit(),一旦visit()失败,则操作失败
}ADT List

//-------------------线性表得动态分配顺序存储结构----------------

#define TRUE 1
#define FALSE 0
#define ERROR 0
#define INFEASIBLE  -1

#define OK 1
#define LIST_INTI_SIZE 100
#define LISTINCREMENT 10
typedef int Status
typedef struct{
  ElemType *elem; //ElemType类型得数组指针,指向数组
  int length;   //线性表得长度
  int listsize;   //当前分配的存储容量
}

//------------------------------初始化表---------------------------------------------

Status InitList_Sq(SqList &L)
{
 //申请100个ElemType类型(数据元素)的空间,并转换成ElemType类型格式
 L.elem=(ElemType *)malloc(LIST_INTI_SIZE*sizeof(ElemType))
 L.length=0;    //空表
 L.listsize=LIST_INTI_SIZE  //初始存储容量
 return OK;
}//InitList_Sq







你可能感兴趣的:(线性表1)