1. 程式人生 > >(更新)線性表基礎知識精煉(Java描述)

(更新)線性表基礎知識精煉(Java描述)

1. 可以對線性表做些什麼呢?

  • 往線性表末尾插入一個新元素
  • 在任意位置插入新元素,比如起始位置,末尾或者元素之間
  • 可以刪除一個元素
  • 可以刪除所有元素
  • 可以檢視任意元素
  • 可以測定線性表是否包含一個特定的元素
  • 統計線性表中的元素數目
  • 可以測定線性表是空的還是滿的
  • 可以顯示線性表中的所有元素

2. 抽象資料型別ADT

抽象資料型別(abstract data type),或稱ADT,由同種型別的資料以及在這些資料上的構成。ADT描述其資料,並且規定其操作,不需要指出如何儲存資料和如何實現操作。因而,對於ADT的討論可以獨立於語言。

3. remove與replace操作的不同解釋

某個應用需要從線性表中刪除一個元素,但又想保留該元素留做它用。那麼可以使該應用使用getEntry()獲得該元素的引用,然後再用remove將它從線性表中刪除。也可以將remove的說明修改為返回從線性表中刪除的元素的引用。使用這個版本的remove,虛擬碼語句如下所示:

oldEntry3 = myLIst.remove(3)

同理,replace的說明也可以改為返回被替換物件的引用,因此如果寫成:

ref = myList.replace(3,f)

那麼ref將會引用原先的元素b。

4. ListInterface介面

/** ADT線性表的介面
 *  線性表中的元素位置從1開始
 */
public interface ListInterface
{
  /** Task: 往線性表末尾插入新元素
   *  @param newEntry 作為新元素插入的物件
   */ @return 如果插入成功返回true,否則返回false
  public boolean add(Object newEntry);

  /** Task: 往線性表中的指定位置插入一個新元素,原本位於指定位置及其上的元素移動到線性表中下一個更高的位置,線性表的大小增加1
   *  @param newPosition 指定新元素位置的一個整數;newPosition>=1並且newPosition<=getLength()+1
   *  @param newEntry 作為新元素插入物件
   */ @return 如果插入成功則返回true,否則返回false
  public boolean add(int newPosition, Object newEntry);

  /** Task: 往線性表中的指定位置刪除一個新元素,原本位於指定位置更高位置的元素移動到線性表中下一個的更低的位置,線性表的大小減1
   *  @param givenPosition 指定刪除元素位置的一個整數;givenPosition>=1並且givenPosition<=getLength()
   *  
   */ @return 如果刪除成功則返回true,否則返回false
  public Object remove(int givenPosition);

  /**Task: 刪除線性表中的所有元素*/
  public void clear();

  /** Task: 替換線性表中的所有指定位置的元素
   *  @param givenPosition 指定替換元素位置的一個整數;givenPosition>=1並且givenPosition<=getLength()
   *  @param newEntry 用於替換givenPosition元素位置的物件
   */ @return 如果替換成功則返回true,否則返回false
  public boolean replace(int givenPosition, Object newEntry);

  /** Task: 檢索線性表指定位置上的元素
   *  @param givenPosition 指定被檢索位置上的元素的一個整數;givenPosition>=1並且givenPosition<=getLength()
   */ @return 如果找到指定的線性表元素,返回對它的引用,否則返回null
  public Object getEntry(int givenPosition);

  /** Task: 確定線性表中是否包含一個給定的元素
   *  @param anEntry 表示一個待查元素的物件
   */ @return 如果線性表含有anEntry,返回true,否則返回false
  public boolean contains(Object anEntry);

  /** Task: 確定線性表的長度
   *  @return 返回線性表中的當前所含元素個數的整數*/
  public int getLength();

  /** Task: 確定線性表是否為空
   *  @return 如果線性表為空,返回true,否則返回false*/
  public boolean isEmpty();

  /** Task: 確定線性表是否為滿
   *  @return 如果線性表為滿,返回true,否則返回false*/
  public boolean isFull();

  /** Task: 按照線性表中的順序顯示線性表中的所有元素。每行一個元素*/
  public void display();

}//end ListInterface