1. 程式人生 > >JAVA線性表

JAVA線性表

oid 線性結構 class title 表拆分 頭插 bst span ams

1. 線性表在計算機中可以用順序存儲和鏈式存儲兩種存儲結構來表示。其中用順序存儲結構表示的線性表成為順序表,用鏈式存儲結構表示的線性表稱為鏈表,鏈表又有單鏈表,雙向鏈表,循環鏈表之分。

2. 線性表是由n(n>=0)個數據元素所構成的有限序列,通常表示為(a0,a1,a2.....an-1)。其中下標i標識數據元素在線性表中的位序號,n為線性表的表長,當n=0時表示該線性表為空表。

3. 對於同一個線性表,其每一個數據元素的值雖然不同,但必須具有相同的數據類型;同時,數據元素之間具有一種線性的或“一對一”的邏輯關系,即:

?3.1第一個數據元素沒有前驅,這個數據元素也稱為開始結點

?3.2最後一個數據元素沒有後繼,這個數據元素也稱為終端結點

?3.3除了第一個和最後一個數據元素之外,其它數據元素有且僅有一個前驅和一個後繼

具有以上邏輯關系的數據結構也稱為線性結構,線性表就是一種線性結構。

4. 對於線性表,其長度可以動態的增長或縮短;可以對線性表中的任何數據元素進行訪問和查找;其數據元素的插入和刪除操作可以在線性表中的任何位置上進行;可以求線性表中指定數據元素的前驅和後繼;可以將兩個線性表合並成一個線性表,或將一個線性表拆分成為兩個或者多個線性子表等。其API如下:

?4.1 clear():將一個已經存在的線性表置為空表

?4.2 isEmpty():判斷線性表是否為空,若為空,則返回true,否則,返回false。

?4.3 length():求線性表中的數據元素的個數並返回其值

?4.4 get(i):讀取並返回線性表中的第i個數據元素的值。其中i的取值範圍為0<=i&&i<=length()-1

?4.5 insert(i,x):在線性表的第i個數據元素之前插入一個值為x的數據元素。其中i的取值範圍為0<=i&&i<=length()。當i==0時,在表頭插入x,當i=length()時,表示其在表尾插入x

?4.6 remove(i):刪除並返回線性表中第i個數據元素。其中i的取值範圍為0<=i&&i<=length()-1

?4.7 indexOf(x):返回線性表中首次出現指定數據元素的位序號,若線性表中不包含此元素,則返回-1

其API所對應的接口如下(java):

public interface List<T>
{
    public abstract void clear();
    public abstract boolean isEmpty();
    public abstract int length();
    public abstract void insert(int i,T x)throws Exception;
    public abstract T get(int i)throws Exception;
    public abstract int indexOf(T x)throws Exception;
    public void remove(int i)throws Exception;
}

JAVA線性表