線性表:具有相同數據類型的幾個元素的有限序列
順序表:線性表的順序存儲(用內存中的連續的一塊存儲空間存儲)
特點:按數據元素的序號進行存取,存取快,增刪慢
在java語言中用接口(Interface)的形式定義線性表的ADT中的公有方法。
package Chapter_3;
//用接口的形式來定義線性表的ADT中共有方法
public interface Interface<E> {
public void Init_List(int size);//初始化線性表,長度爲size
public int Length_List();//求線性表的當前長度
public E Get_List(int i);//查找線性表中L中的第i個元素
public int Locate_List(E e);//查找給定元素x在線性表中的位置
public boolean Insert_List(int i,E e);//在線性表中值爲e的元素作爲第i個元素
public int Delete_List(int i);//刪除線性表中的第i個元素
public boolean add_List(E e);
}//interface IList
順序表作爲對抽象接口的實現
package Chapter_3;
public class SeqList<T> implements Interface<T> {
private static final int MAX_SIZE = 100;// 初始化線性表的大小
private int last;// 線性表最後一個元素在數組中的位置
private T[] data;// 線性表的存儲空間
// 當沒有指定現線性表大小的情況下,初始化制定大小的存儲空間
public SeqList() {
Init_List(MAX_SIZE);
}
// 初始化線性表
@Override
public void Init_List(int size) {
data = (T[]) new Object[size];//初始化指定大小的空間
last = -1;
}
@Override
// 獲取到線性表的長度
public int Length_List() {
// TODO Auto-generated method stub
return last + 1;
}
@Override
// 獲取到指定位置的元素 並返回
public T Get_List(int i) {
T e = null;
if (i < 0 || i > last + 1) {//判斷位置是否合法
System.out.print("輸入的參數不在合法範圍內");
return null;
} else
return data[i];
}
/**
* 將指定與元素在表中的位置返回 如果存在,
* 返回元素的位置 如果不存在返回-1
*/
@Override
public int Locate_List(T e) {
int value = 0;
while (value <= last && data[value] != e)//判斷鈣元素是否存在
value++;
if (value > last)
return -1;
return value;
}
@Override
/**
*將指定元素插入表的指定位置
*插入成功返回true
*失敗返回false
*/
public boolean Insert_List(int i, T e) {
if(last==MAX_SIZE-1){
System.out.print("表的存儲空間已滿,請擴展後插入");
return false;
}
if(i<0||i>last+2){
System.out.print("請插入到正確的位置");
return false;
}
for(int j=last;j>=i-1;j--){
data[j+1]=data[j];
}
data[i-1]=e;
return true;
}
/**
* 刪除線性表中的第i個元素
* 刪除成功返回1
* 刪除不成功返回-1
*/
@Override
public int Delete_List(int i) {
if(i<1||i>last+1){
System.out.println("線性表中不存在該未知的元素");
return -1;
}
for (int j = i-1; j<=last; j++) {
data[j]=data[j+1];
}
last--;
return 1;
}
/**
*
* 添加指定元素
*/
@Override
public boolean add_List(T newData) {
data[last + 1] = newData;
last++;
return true;
}
}
測試類的實現:package Chapter_3;
public class ArrayListTest {
public static void main(String[] args) {
SeqList<String> aList= new SeqList<String>();
aList.add_List("a");
aList.add_List("b");
aList.add_List("c");
aList.add_List("d");
System.out.println(aList.Get_List(1));
System.out.println(aList.Length_List());
System.out.println(aList.Locate_List("c"));
System.out.println(aList.Insert_List(2,"e"));
System.out.println(aList.Delete_List(3));
}
}
以上代碼均本人實踐所寫,有任何問題,可以直接留言提問