線性表的順序儲存結構之順序錶類的實現 Java

2021-09-07 14:36:19 字數 2664 閱讀 4603

首先讓我們來看下順序表的定義:

與其直接前驅ai-1

及直接後繼ai+1

的儲存位置相鄰。順序儲存的線性表也成為順序表(sequential list)。

順序錶類seqlist提供線性表基於順序儲存結構的一種實現,它有兩個私有成員變數table和n,table是乙個存放元素的物件陣列;n為線性表長度,n≤table.length。seqlist宣告如下,它實現了線性表的介面llist。

package datastructure.linearlist;  

import datastructure.linearlist.llist;  

public class seqlistimplements llist//順序錶類,實現線性表介面  

public seqlist()                                        //指定空表的預設容量  

public boolean isempty()                                //判斷順序表是否為空,若空返回true  

public int length()                                     //返回順序表長度  

public e get(int index)                                 //返回index(初值為0)位置的物件,若序號無效,返回null  

return null;  

}  public e set(int index,e element)                       //設定index位置的物件為element,若操作成功,放回原物件,否則返回null  

return null;  

}  public boolean add(int index,e element)                 //在index位置插入element物件,若操作成功返回true,不能插入null  

if(this.n == table.length)                          //若陣列滿,則需要擴充順序表容量  

}  if(index < 0)                                        //下標容錯  

if(index > this.n)  

for(int j = this.n-1;j >= index;j--)             //元素後移,平均移動n/2  

this.table[index] = element;  

this.n++;  

return true;  

}  public boolean add(e element)                           //在順序表最後插入element物件  

public e remove(int index)                              //移去index位置的物件,若操作成功,則返回被移去的物件,否者返回null  

this.table[this.n - 1] = null;  

this.n--;  

return old;  

}  return null;  

}  public void clear()                                     //清空順序表  

this.n=0;  

}  }  

public string tostring()                                //返回顯示所有元素的字串,形式為(,)  

str += this.table[this.n - 1].tostring();  

}  return str + ")";  

}  }

順序表是一種隨即訪問結構,訪問任何乙個元素的get()、set()方法的時間複雜度是o(1)。

對順序表進行插入或刪除操作是,演算法所花費的時間主要用於移動元素。在等概率情況下,插入乙個元素平均需要移動一半的元素,時間複雜度為o(n)。同裡,刪除乙個元素的時間複雜度亦為o(n)。

綜上所述,順序表具有下列特點:

①:元素的物理儲存順序直接反映表中元素的邏輯順序,可以隨機訪問元素。

②:插入和刪除的操作效率很低。每插入或刪除乙個元素,可能需要移動大量元素,其平均移動次數是順序表長度的一半。再者,陣列容量不可更改,存在因容量小造成資料溢位,或因容量過大造成記憶體資源浪費的問題。解決資料溢位的方法是,申請另乙個更大容量的陣列,並進行陣列元素複製,但插入操作效率很低。 

順序表是一種隨即訪問結構,訪問任何乙個元素的get()、set()方法的時間複雜度是o(1)。

對順序表進行插入或刪除操作是,演算法所花費的時間主要用於移動元素。在等概率情況下,插入乙個元素平均需要移動一半的元素,時間複雜度為o(n)。同裡,刪除乙個元素的時間複雜度亦為o(n)。

綜上所述,順序表具有下列特點:

①:元素的物理儲存順序直接反映表中元素的邏輯順序,可以隨機訪問元素。

②:插入和刪除的操作效率很低。每插入或刪除乙個元素,可能需要移動大量元素,其平均移動次數是順序表長度的一半。再者,陣列容量不可更改,存在因容量小造成資料溢位,或因容量過大造成記憶體資源浪費的問題。解決資料溢位的方法是,申請另乙個更大容量的陣列,並進行陣列元素複製,但插入操作效率很低。

線性表 順序儲存結構之 順序表

順序表 用順序方法儲存的線性表也叫做順序表 如果乙個線性表用一組連續的儲存單元依次儲存線性表的資料元素,那麼這個表就是順序表。類似陣列 資料元素在計算機內 物理位置相鄰 例 如果用 address ai 表示資料元素ai的儲存位置,l表示資料元素占用的儲存單元,則 address ai addres...

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性表的順序儲存結構 順序表

線性表的順序儲存結構 順序表一.在c c 語言中,借助陣列型別來實現順序表,也就是說,用陣列存放線性表的元素及其邏輯關係,陣列的基本型別就是線性表中元素的的型別,陣列大小 即陣列上界 下界 1 要大於等於線性表的長度,否則該陣列不能存放對應線性表的所有元素。所以當線性表長度小於陣列大小時,該陣列中會...