2.1线性表类型定义
线性表描述:A=(a1,a2,...an);A为线性表的名称,ai为线性表 的数据元素。
线性表的离散定义:B=<A,R>,A包含n个结点(a1,a2,...an),R中只包含一个关系,即线性关系,R={(ai-1,ai)|i=1,2,....,n},
一般的线性表的操作可以包含以下几种:
* public linklist() 建立一个空的线性表。
* public linklist(collection c) 将collection c中的数据依次建立一个线性表。
* public object getfirst() 返回线性表的第一个元素。
* public object getlast() 返回线性表的最后一个元素 。
* public object removefirst() 删除线性表的第一个元素,并返回该值。
* public object removelast() 删除线性表的最后一个元素 ,并返回该值。
* public void addfirst(object o) 将object o插入到链表的开头位置。
* public object addlast(object o) 将object o插入到链表的末尾位置
* public boolean contains(object o) 检查object o是否存在链表中,如果存在返回true,不存在返回false
* public int size() 返回线性表的元素个数
* public boolean add(object o) 将object o插入到链表的末尾位置,并返回true
* public boolean remove(object o) 将链表中第一次出现的元素删除,成功返回true,否则false;
* public addall(collection c) 将collection c中的数据依次插入到链表的末尾
* public addall(int index,collection c) 将collection c中的数据依次插入到链表的index位置,并将index位置之后的元素依次插入到collection c之后,链接成一个完整的线性表
* public void clear() 删除线性表中的所有元素
* public object get(int index) 返回线性表的index位置的元素
* public object set(int index, object element) 以object element取代线性表index位置的元素
* public void add(int index,object element) 将object element插入到线性表index位置之后。
* public object remove(int index) 删除线性表中的index位置的元素
* public int indexof(object o)返回object o在线性表中第一次出现的位置,若不存在返回-1
* public int lastindexof(object o)返回object o在线性表中最后一次出现的位置,若不存在返回-1
* public listiterator listiterator(int index)返回线性表index位置开始的元素的内容
使用抽象数据类型(ADT)定义线性表如下:
ADT list{
数据对象:D={ai|ai属于元素集合,i=1,2,....n,n>=0}
数据关系:R={<ai-1,ai>|ai-1,ai属于元素集合,i=1,2,....n,}
基本操作:{
就是以上的那些操作
}
}
2.2 线性表的顺序表示和实现
线性表的存储结果分为书序存储和非顺序存储。顺序存储也称为向量存储或一维数组存储。
1.顺序表(向量存储,一维数组存储),线性表中节点存放的物理顺序和逻辑顺序完全一致。
2.顺序表基本运算的实现
线性表顺序存储的结构容易实现存取数据元素,插入或删除数据元素比较繁琐