單鏈表 模板類

2021-06-04 14:03:49 字數 2439 閱讀 6534

#include using namespace std;

//宣告單鏈錶類模板(為了說明友元類)

template class list;

//定義鍊錶結點類模板

template class listnode

listnode(type & item):data(item),next(null) {}

public:

//成員函式

//以item和next建立乙個新結點

listnode* createnode(type & item, listnode*next=null);

//取得結點中資料

type getdata() ;

//取得結點中指標值

listnode* getpointer() ;

//設定結點的data值

void setdate(type value)

//修改結點的指標值

void setpointer(listnode*nextt)

};//成員函式:以item和next建立乙個新結點

template listnode* listnode::createnode(type & item, listnode*next =null )

//定義單鏈錶類模板

template class list

list() //頭結點資料不定

~list()

//將鍊錶置為空

void makeempty();

//計算鍊錶的長度

int length() const;

//搜尋含資料value的結點並置為當前結點

listnode*find(type value);

//搜尋第 i 個結點的位址並置為當前結點

listnode*locate(int i);

//獲得當前結點的資料域的位址

type* getdate();

//將value插在當前位置後並置為當前節點

int insert (type value);

//將鍊錶當前結點刪去,返回該結點資料

type * removecurrentnode();

//當前指標置於表頭, 返回表頭結點位址

listnode* firster()

//獲得第乙個結點的資料域的位址

type *first();

//獲得當前結點後繼的資料域位址

type *next();

bool isempty()

//顯示輸出鍊錶

void dispaly();

};template //函式模板

void list::makeempty()

//當前指標置於表頭結點,形成空表

current=first;

}template int list::length() const

return count;

}//將value插在當前位置後並置為當前節點

// 建立鍊錶時,每次都將新結點插入到末尾

templateint list::insert(type value)

//獲得當前結點的資料域的位址

template type* list::getdate()

//顯示輸出鍊錶

template void list::dispaly()

cout

//搜尋第 i 個結點的位址並置為當前結點

template listnode*list::locate(int i)

listnode*p=first->next;

int k=1;

while(p!=null&&knext;

k++;

} if (p!=null)

return p;

}//將鍊錶當前結點(current)刪去,返回該結點資料

template type * list::removecurrentnode()

//獲得第乙個結點的資料域的位址

template type* list::first()

//獲得當前結點後繼的資料域位址

template type* list::next()

void main()

*/ for (char i='a';i

l2.insert(i);

l1.dispaly();

l2.dispaly();

//搜尋資料

listnode*p=l2.find('c');

if (p)

{ cout<

if(q)

cout<

單鏈表模板類

鍊錶是最基本的資料結構,是一組不連續的資料的集合,鍊錶中每個結點除包含結點元素外,還包含下一結點的位址。對鍊錶可以實現插入 刪除 查詢以及顯示等操作。單鏈表模板類list.h ifndef list h define list h include using namespace std templa...

單鏈表模板類

在單鏈表中必然需要定義乙個頭節點來指向鍊錶的第乙個元素,struct node public object mutable node m header 這樣直接定義會有乙個問題,頭節點的構造會呼叫t類的建構函式,這顯然時不需要的,解決方案如下 mutable struct public object...

C 模板類 單鏈表

c 作業,用模板類寫鍊錶,完成了對基本的單鏈表的插入,刪除等。include using namespace std templatestruct node templateclass linkedlist linkedlist t find int index 返回索引對應的值 void remo...