基本資料結構 順序表

2021-06-19 18:40:03 字數 2412 閱讀 9092

順序表,陣列就是典型的順序表,順序表便於查詢元素,單移動、刪除時間開銷比較大,好了廢話少說,直接上**,對照原始碼看吧

#ifndef seqlist_h

#define seqlist_h

#include #include using std::cin;

using std::cout;

using std::cerr;

using std::endl;

using std::ostream;

using std::istream;

const int defaultsize = 100;

const int initlen = 20;

template class seqlist

int length() const//返回順序表內已有資料的長度

int maxsize() const//返回順序表的最大容量

bool isempty()//返回順序表是否為空

bool isfull()//返回順序表是否已滿

int search(t &x) const;//查詢x是否在順序表中存在,存在返回其位置,不存在返回0

t& getdata(int i) const//返回第i個編號位置的元素

} void setdata(int i, t &x)//對第i個編號位置的元素賦值

} bool insert(int i, t &x);//在第i個編號位置插入元素

bool remove(int i, t &x);//把第i個編號位置的元素移走

void resize(int newsize);//調整順序表的大小,關鍵是要把原來的資料複製過來

seqlist& operator= (const seqlist&rhs);

void init();//這個方法無實際意義,純粹是為了測試用單獨引入的1個方法

friend ostream& operator << (ostream& os,const seqlist& seqlist)

return os;

}private:

t *data;//存放的陣列

int size;//最大可存放的項

int last;//當前尾巴元素的小標

};template seqlist::seqlist(int maxsize) }}

template seqlist::seqlist(const seqlist& seqlist)

for (int i = 1; i <= last+1; i++)

}template int seqlist::search(t &x) const

} return 0;

}template bool seqlist::insert(int i, t &x)

if( i < 0 || i > last + 1)//注意我們講的是順序表

for(int j = last; j >= i-1; j--)

this->data[i-1] = x;//插入

last++;//現有尾巴下標後移

return true;

}template bool seqlist::remove(int i, t &x)

if(i < 1 || i >= last+1)

x = this->data[i-1];

for(int j = i; j <= last; j++)//後面的元素向前移

last--;

return true;

}template void seqlist::resize(int newsize)

if(newsize != size)

else //新的容量比原來小

t* newarray = new t[newsize];

if( newarray == null)

t* srcptr = data;

t* descptr = newarray;

for(int i = 0; i <= end; i++)

delete data;//刪除原來的陣列

data = newarray;//data指向新的陣列

last = end;//重新記錄尾巴元素的下標

size = newsize;//重新新的容量 }}

template seqlist& seqlist::operator= (const seqlist&rhs)

data = new t[size];

if (data == null)

for (int i = 1; i <= last+1; i++)

return *this;

}template void seqlist::init()

}#endif

基本資料結構 鍊錶

鍊錶 鍊錶與陣列的區別是鍊錶中的元素順序是有各物件中的指標決定的,相鄰元素之間在物理記憶體上不一定相鄰。採用鍊錶可以靈活地表示動態集合。鍊錶有單鏈表和雙鏈表及迴圈鍊錶。書中著重介紹了雙鏈表的概念及操作,雙鏈表l的每乙個元素是乙個物件,每個物件包含乙個關鍵字和兩個指標 next和prev。鍊錶的操作包...

基本資料結構 鍊錶

談到鍊錶之前,先說一下線性表。線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。順序儲存結構就是兩個相鄰的元素在記憶體中也是相鄰的...

基本資料結構(2) 鍊錶

鍊錶開發於1955 56,由當時所屬於蘭德公司 英語 rand corporation 的艾倫紐維爾 allen newell 克里夫肖 cliff shaw 和赫伯特西蒙 herbert simon 在他們編寫的資訊處理語言 ipl 中做為原始資料型別所編寫。ipl被作者們用來開發幾種早期的人工智...