2.1.1 抽象数据类型线性表的定义

  {加工型操作}
 

  容易看出以上7个操作的结果都没有改变线性表中的数据元素和数据元素之间的关系,因此它们都是"引用型"的操作,函数中的"L"是"传值参数"。而以下四个操作的结果或修改表中的数据元素,或修改元素之间的关系,被称为"加工型"的操作,为了便于返回操作的结果,用"引用" 传递参数"L",即在参数 L 之前加有符号"&"。在以后的讨论中,我们均称它们为"引用参数"。
 
 
    ClearList( &L )
   初始条件:线性表 L 已存在。
   操作结果:将 L 重置为空表
    值得注意的是,在进行了 DestroyList(L) 操作之后,线性表 L 不再存在,即不能在以后的程序中再引用它,而在对线性表L进行 ClearList(L) 操作之后,仅是删除表中所有元素,在以后的程序中仍可对它进行某些"合法"操作,如判空、插入等。
 
 
    PutElem( &L, i, &e )
   初始条件:线性表L已存在,1≤i≤LengthList(L)
   操作结果:L 中第 i 个元素赋值同 e 的值。
 
    和GetElem操作相同,i 的值必须在线性表的长度范围内。  
    ListInsert( &L, i, e )
   初始条件:线性表 L 已存在,1≤i≤LengthList(L)+1。
   操作结果:在 L 的第 i 个元素之前插入新的元素 e,L 的长度增1。
    可在线性表中任意一个元素之前插入一个新的数据元素,i=1 意为在第一个元素之前插入一个新的数据元素,i=LengthList(L)+1 则为在最后一个元素之后插入一个新的数据元素。换句话说,操作结果是使新插入的数据元素成为插入之后的线性表中第 i 个数据元素,显然,插入位置 i 的合法值应为
   1≤i≤LengthList(L)+1
 
 
    ListDelete( &L, i, &e )
   初始条件:线性表 L 已存在且非空,1≤i≤LengthList(L)
   操作结果:删除 L 的第 i 个元素,并用 e 返回其值,L 的长度减1

} ADT List

    被删除的元素必须是当前线性表中存在的元素,因此被删元素的位序应满足条件
   1≤i≤LengthList(L)