資料結構 線性表 鍊錶實現

2021-07-10 09:34:30 字數 1943 閱讀 8458

#ifndef __chain_h__

#define __chain_h__

#include using namespace std;

//vs平台下自己定義了nullptr = null = 0

//但是在gcc下沒有定義

#ifndef nullptr

#define nullptr 0

#endif

/*鍊錶的節點元素類

*/template class chainnode;/*

鍊錶類*/

template class chain

~chain(); //析構函式

bool isempty() const //判斷鍊錶是否為空

int length() const; //獲取鍊錶長度

bool find(int k, t& x) const; //獲取第k個元素

int search(const t& x) const; //在鍊錶中查詢元素x

chain& delete(int k, t& x); //從鍊錶中刪除乙個元素

chain& insert(int k, const t& x); //向鍊錶中插入乙個元素

void output(ostream& out) const; //按照鍊錶中遍歷方向輸出鍊錶元素

private:

chainnode*first; //指向第乙個結點的指標

};templatechain::~chain() //析構函式中將申請的堆空間都釋放掉

}/*獲取鍊錶的長度*/

templateint chain::length() const

return len;

}/*返回第k個元素*/

templatebool chain::find(int k, t& x) const

x = current;

return true;}/*

在鍊錶中搜尋元素x

*/templateint chain::search(const t& x) const

if (!current)

return -1;

return index;}/*

從當前鍊錶中刪除乙個元素

*/templatechain& chain::delete(int k, t& x)

k -= 2;

while(k--) //將p移動到要刪除元素的上乙個位置

chainnode*tmp = p->link; //要刪除的元素

if(!tmp->link) //如果刪除的是最後乙個元素

else

return *this;}/*

在第k個元素之後插入節點,和這個過程要分為兩種情況:

1、插入點在鍊錶的頭部,也就是k=0的位置;

2、插入點在鍊錶的中間。

*/templatechain& chain::insert(int k, const t& x)

p->link = first->link; //改變指標指向

first->link = p;

return *this;

} else

p->link = index->link; //修改指標指向

index->link = p;

return *this; }}

/*依次輸出鍊錶中的元素*/

templatevoid chain::output(ostream& out) const

out << endl;

}template ostream& operator<<(ostream& out, const chain& x)

#endif // !__chain_h__

資料結構 線性表 鍊錶實現

include include define ok 1 define error 0 typedef int status status是函式的型別,其值是函式結果狀態ok等 typedef int elemtype elemtype型別根據實際情況而定這裡設為int型 typedef struct...

資料結構 線性表 鍊錶

在之前了解完什麼是資料結構之後 資料結構 線性表 順序表 陣列 我們再來看看線性結構另外一種實現方式 鍊錶順序表中的鍊錶沒有物理上的連續儲存要求,只需要在儲存資料時通過 鏈 的方式將資料進行連線,而這個 鏈 的實現就是通過指標來實現的。鍊錶的連續儲存方式 對於抽象資料型別來說,每一種資料結構都有自己...

資料結構 線性表(順序表 鍊錶)

線性表 1 線性表是一種邏輯結構,表示一種一對一的邏輯關係,除首節點和尾節點,每個結點只有乙個前驅結點和乙個後繼結點 2 兩種實現的物理結構 順序儲存,鏈式儲存 順序表 1 定義 用一組位址連續的儲存單元,一次儲存線性表中的元素,使得邏輯位置相鄰的元素物理位置也相鄰。2 特點 順序表元素的位序從1開...