之前學過,資料描述方法中有公式化描述,鍊錶描述,間接定址和模擬指標,在之前已經將公式化描述和鍊錶描述通過**的形式展現出來了,現在貼出簡介定址的**。其中簡介定址是融合了公式化描述和鍊錶描述的有點,使用乙個指標表來記錄資料的位置,指標表相當於乙個陣列,這樣在插入,刪除的時候,其中的資料的位置並沒有發生變化,而僅僅就是指標表的指向發生了變化,同時很多操作又能像公式化一樣通過o(1)的複雜度進行操作。下面貼出我的**:
#ifndef _indirect_h_
#define _indirect_h_
#include "exception.h"
#include
template
class indirectlist
/*返回鍊錶的長度*/
int length() const
/*看能否找到第k個元素,找到後給x賦值*/
bool find(int k,t& x) const;
/*找到元素是x的元素的位置*/
int search(const t& x) const;
/*從鍊錶中刪除第k個元素,並賦值給x*/
indirectlist& delete(int k,t& x);
/*在鍊錶的第k個位置插入元素x*/
indirectlist& insert(int k,const t& x);
/*列印輸出整個鍊錶*/
void print();
private:
int length; //鍊錶的長度
int maxsize; //鍊錶的最大長度
t **table; //模擬指標表
};template
indirectlist::indirectlist(int maxlistsize)
template
indirectlist::~indirectlist()
template
bool indirectlist::find(int k, t &x) const
template
indirectlist& indirectlist::delete(int k, t &x)
length--; //當前長度減一
return *this;
}else
}template
indirectlist& indirectlist::insert(int k, const t &x)
/*** 新建乙個間接位址
*/table[k] = new t;
*table[k] = x;
length++;
return *this;
}template
int indirectlist::search(const t &x) const
}return -1;
}/**
* 列印輸出整個鍊錶的內容
*/template
void indirectlist::print()
std::cout
<< std::endl;
}#endif
**相對來說比較簡單,只不過其中比較難懂的就是
t** table,其中table指向的是t**,
table指向的是t,也就是資料t的位址,由此可知table指向的是資料的位址的位址,進行乙個間接定址,這個類似於計算機組成原理上的簡介定址。
好好體會一下,就會明白的!!加油!!
C 實現的間接定址
之前學過,資料描述方法中有公式化描述,鍊錶描述,間接定址和模擬指標,在之前已經將公式化描述和鍊錶描述通過 的形式展現出來了,現在貼出簡介定址的 其中簡介定址是融合了公式化描述和鍊錶描述的有點,使用乙個指標表來記錄資料的位置,指標表相當於乙個陣列,這樣在插入,刪除的時候,其中的資料的位置並沒有發生變化...
間接定址實現
一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。二 實驗內容 建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。三 源 五 實驗心得 間接定址,在網...
間接定址的實現
資料結構 實驗二 線性表綜合實驗 一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題 二.實驗內容 1.建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果...