線性表主要有兩中表現方式,一種是連續儲存式,例如陣列,另一種是非連續儲存式,例如鍊錶。 相比於鍊錶,陣列最大的好處就在於可以隨機訪問,鍊錶的最大優勢是,能夠有效利用儲存空間,合理的新增,刪除操作只需要o(1)。於是誕生了間接定址,即是把陣列與鍊錶的優點結合起來。
**如下:
#ifndef indirectlist_hh
#define indirectlist_hh
#include templateclass cindrectlist; // cindrectlist;
// implement;
// constructors;
templatecindrectlist::cindrectlist(int size = 10):
m_nlength(0),m_nsize(size)
templatecindrectlist::~cindrectlist()
// insert data after (k-1)th element;
templatecindrectlist& cindrectlist::minsert(int k, const t& data)
if(m_nlength == m_nsize)
// move elements to contain k;
for(int i = m_nlength - 1; i >= k; i --)
// add data;
m_pptable[k] = new t;
*m_pptable[k] = data;
m_nlength ++;
return *this;
}// delete;
templatecindrectlist& cindrectlist::mdelete(int k, const t& data)
return *this;
}templatebool cindrectlist::mfind(int k, const t& data) const
return (*(m_pptable[k - 1]) == data) ? true : false;
}templateint cindrectlist::mlength() const
templateint cindrectlist::msize() const
#endif
測試**如下:
#include "indrectlist.h"
#include #include using namespace std;
int main()
結果如下:
1
2input wrong index in find
0請按任意鍵繼續. . .
資料結構 六 間接定址
其實在作為鍊錶成員函式的箱子排序中已經用到間接定址,即指向指標的指標。chiannode bottom,top bottom new chainnode range 1 top new chainnode range 1 這裡的bottom儲存的資料型別為chainnode 的指標型別,指向指標的b...
資料結構系列之線性表(間接定址)
ifndef indirectlist h define indirectlist h include using namespace std template class indirectiterator template class indirectlist int length const b...
線性表綜合實驗之間接定址
includeusing namespace std const int max 100 templatestruct node templateclass indirectadd t number get int i int location get t x void insert int i,t...