資料結構 六 間接定址

2021-10-07 04:31:49 字數 2325 閱讀 8588

其實在作為鍊錶成員函式的箱子排序中已經用到間接定址,即指向指標的指標。

chiannode

**bottom,

**top

bottom =

new chainnode

*[range+1]

;top =

new chainnode

*[range+1]

;

這裡的bottom儲存的資料型別為chainnode* 的指標型別,指向指標的bottom便實現了間接定址。

間接定址實現線性表的優勢:間接定址中,陣列不在儲存節點,而是儲存節點的位址,可以看做是公式化描述和鏈式描述的結合體。訪問時間複雜度為o(1),插入刪除操作僅僅修改節點的位址在陣列中的位置,優於使用鍊錶描述的插入刪除操作。

缺陷:儲存節點的位址增加了額外的開銷

實現**:

**中預設已經做好了*、=和必要操作符的過載

template

<

class

t>

class

indirectlist

:public linearlist

intsize()

const

t&get(

int theindex)

const

;int

indexof

(const t& theelement)

const

;void

erase

(int theindex)

;void

insert

(int theindex,

const t& theelement)

;void

output

(ostream& out)

const

;private

:int listsize;

int maxsize;

t** elements;};

template

<

class

t>

// 建構函式

indirectlist

::indirectlist

(int maxsize)

template

<

class

t>

indirectlist

::indirectlist

(const indirectlist& thelist)

}template

<

class

t>

// 析構函式

indirectlist::~

indirectlist()

delete

elements;

}template

<

class

t>

t& indirectlist

::get

(int theindex)

const

template

<

class

t>

int indirectlist

::indexof

(const t& theelement)

const

return-1

;}template

<

class

t>

void indirectlist

::erase

(int theindex)

listsize--;}

template

<

class

t>

void indirectlist

::insert

(int theindex,

const t& theelement)

for(

int i = theindex -

1; i > theindex -

1; i--

) elements[theindex-1]

=new t;

*elements[theindex-1]

= theelement;

}template

<

class

t>

void indirectlist

::output

(ostream& out)

const

}

實驗3 間接定址

一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。二 實驗內容 建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。用間接定址實現 三 實驗步驟 1 依...

實驗3 間接定址

include using namespace std const int maxsize 100 templatestruct node templateclass indirectaddress 無參構造 templateindirectaddress indirectaddress 有參構造 ...

經典資料結構之間接定址

線性表主要有兩中表現方式,一種是連續儲存式,例如陣列,另一種是非連續儲存式,例如鍊錶。相比於鍊錶,陣列最大的好處就在於可以隨機訪問,鍊錶的最大優勢是,能夠有效利用儲存空間,合理的新增,刪除操作只需要o 1 於是誕生了間接定址,即是把陣列與鍊錶的優點結合起來。如下 ifndef indirectlis...