其實在作為鍊錶成員函式的箱子排序中已經用到間接定址,即指向指標的指標。
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...