線性表的陣列實現

2021-09-06 03:13:48 字數 3021 閱讀 4516

分別實現3種型別的鍊錶,這一篇用陣列來實現線性表---

有序鍊錶:鍊錶元素或節點始終保持有序,鍊錶元素為comparable物件,主要體現在插入操作要插入在相應的序列位置

無序鍊錶:無序,每次指定插入在哪(表頭,尾,or指定元素之後)

將三種實現的都有的公共操作定義在乙個介面adt中,對應於各自特徵所特有的操作擴充套件在自己的類中,可以看到,其實就是插入操作(add)不同而已。

以上說明具體見下列adt定義中的注釋:

鍊錶adt:

package

list;

/*1,我們將實現3中型別的鍊錶:有序鍊錶的元素是可比較物件,在插入刪除時始終維持鍊錶有序;無序鍊錶是無序的,

* 插入時指定插入位置(鍊錶首,尾,或指定元素之後);索引鍊錶可以根據索引來訪問元素(例如返回某個元素的索引,

* 返回某個索引上的元素,在某個索引處刪除或插入元素等等)。他們的區別就在於插入的操作不一樣。

* 2,將有序鍊錶,無序鍊錶,索引鍊錶的公共操作定義為介面,不同的操作在類中擴充套件

*/public

inte***ce

listadt

1,有序鍊錶的陣列實現

成員定義:

private

object contents;

private

intrear;

//將鍊錶的一端固定在0,rear表示下乙個可用單元的下標(也表示長度)

private

static

intsize =10

; 構造方法和陣列動態擴充套件:

public

arrayorderedlist()

public

void

expand()

有序鍊錶的實現:

package

list;

public

class

arrayorderedlist

implements

listadt

public

void

expand()

//三種鍊錶的介面公共操作(實現是一樣的)

public

intsize()

public

boolean

isempty()

public

boolean

contains(object element)

public

object first()

public

object last()

public

object removefirst()

object result

=contents[0];

for(

intindex =0

;index

<

rear -1

;index++)

contents[index]

=contents[index+1

];rear--;

return

result;

}public

object removelast()

object result

=contents[rear-1

];contents[rear-1

] =null;//

也可以不置空,下次覆蓋

rear--;

return

result;

}public

object remove(object element)

for(

intindex =0

;index

<

rear;index++)

if(contents[index].equals(element))

rear--;

return

result;

}return

null;}

//有序鍊錶擴充套件的操作

public

void

add(comparable element)

contents[rear]

=element;

rear++;

}}

2,無序鍊錶的陣列實現

就是add操作不一樣,其他完全相同,只貼出擴充套件部分不同的幾個操作:

//

無序鍊錶擴充套件的操作

public

void

addtofront(object element)

public

void

addtorear(object element)

public

void

addafter(object after,object element)}

3,索引鍊錶的陣列實現

擴充套件的不同操作:

//

索引鍊錶擴充套件的操作

public

void

add(object element)

public

void

add(

intindex,object element)

public

void

set(

intindex,object element)

contents[index]

=element;

}public

object get(

intindex)

public

intindexof(object element)

return-1

;}public

object remove(

intindex)

return

null;}

陣列實現的很多地方都在移動元素,在插入和刪除上沒有優勢,它的優勢在於隨機訪問。

線性表 陣列實現

include include includeusing namespace std define ms a memset a,0,sizeof a define maxlength 100 線性表陣列實現,定義乙個具有兩個域結構體,陣列下標為0的地方不存放元素,可以使位置i對應整數i 第乙個域是陣...

線性表陣列實現

線性表 順序表示 用陣列實現,比較簡單 線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素,在高階語言程式設計中,陣列具有隨機訪問的特性,因此通常都用陣列來描述資料結構中的順序儲存結構,對於線性表,可以用一維陣列來實現 1 順序表的初始化 定義乙個object型別的陣列,可儲存任...

用陣列實現線性表

對於線性結構,有兩種儲存的方法,一種是使用 c語言中內建的陣列,這樣的結構成為 順序表 另一種使用指標,這樣的結構成為鍊錶。對於線性結構,有12種基本的操作,分別是 初始化 刪除順序表 清空順序表 判斷是否為空 遍歷 求表的長度 求某個元素在表中的位置 返回特定序號的元素 求某個元素的前乙個元素 求...