模擬STL鍊錶類的實現

2021-07-04 08:53:39 字數 2472 閱讀 6877

stl內部定義了多種容器和迭代器,方便了資料結構類的使用,且不需關注內部原始碼。為了方便個人使用習慣,我又重寫了乙個鍊錶類,作為學c++後的第乙個專案作業。我將其命名為clist。

/*

clist是乙個鍊錶類,而_clist是鍊錶的乙個單元,iter是乙個迭代器(與stl模板庫用法相同)。

clist的成員函式:

int:getnum()返回clist中的單元數量。

_clist*:add()在clist結尾新增乙個單元,但data為初始值。

_clist*:add(type x)在clist結尾新增乙個單元,且該單元data為x。

_clist*:add(_clist* p,type x)在p後新增乙個單元,且該單元data為x,如果p為null則在開頭新增。

_clist*:add(_clist* p)在p後新增乙個單元但該單元data為初始值。

void:del(clist* p)刪除p指向的元素。

void:del()刪除整個鍊錶的所有元素。

_clist*:

next(_clist* p)返回p的下個單元。

_clist*:prev(_clist* p)返回p的上個單元。

void:putdata(_clist* p,type x)將x賦給p指向的單元的data。

void:putsymbol(_clist*p,int

x)將x賦給p指向的單元的symbol。

t:data(_clist* p)返回p指向的單元的data值。

int:symbol(_clist*p)返回p指向單元的symbol值。

不建議使用未列出的函式。

_clist的變數說明:

_clist* next:該單元的下個單元。

_clist* prev:該單元的上個單元。

t data:該單元的資料值。

int symbol:該單元的標記值。

iter的使用說明:

iter ++:可以使迭代器從現在位置移向下一位置。

t *:返回迭代器現在的data值。

void */

#include

template class _clist

};template class iter

iteroperator ++(int)

prev=(*next).prev;

symbol=(*next).symbol;

data=(*next).data;

thepointer=next;

next=(*next).next;

return

*this;

}iteroperator --(int)

next=(*prev).next;

symbol=(*prev).symbol;

data=(*prev).data;

thepointer=prev;

prev=(*prev).prev;

return

*this;

}bool operator =(_clist*p)

bool operator ==(_clist* p)

bool operator !=(_clist* p)

t operator *()

_clist* operator &()

void operator <<(t x)

};template class clist

int getnum()

return n;

}clist(_clist& h)

_clist* add()

else

return object2;

}_clist* add(t data)

else

return object2;

}_clist* add(iter& object)

else

return object2;

}_clist* add(iterobject,t data)

else

return object2;

}void del(_clist*object)

void del()

head=tail=null;

delete i;

}_clist* next(_clist* pp)

}_clist* prev(_clist*pp)

}void movep(_clist* p)

_clist* init()

void putdata(_clist*p,t data)

void putsymbol(_clist*p,int symbol)

t data(_clist*p)

int symbol(_clist*p)

_clistgethead()

_clistgettail()

};

陣列模擬鍊錶的實現

pragma once 原理很簡單,將陣列的元素看成是鍊錶,或者說是陣列空間起到了記憶體池的作用。然後用兩個結點表示 當前使用 空閒的鍊錶 對效率問題上的一些說明 增 這個無需說,鍊錶直接秒殺。刪 類裡提供的是乙個element結構,裡面包含了使用者的資料。如果你想保持常量的效率 在一些資料介面提供...

STL之佇列 鍊錶實現

1 實驗專案三 佇列的基本操作應用 實驗結果 輸入 8人資訊 a,b,c,d,e,f,g,h 輸出 the dancepartners a bc d e fg is waiting for a partner.實驗分析 1.佇列的操作特點 2.列舉除錯執行過程 現的錯誤並分析原因。要求 1 程式要新...

模擬實現鍊錶

該鍊錶實現的功能 1.指定位置之前插入元素 2.列印鍊錶 3.刪除指定元素 4.刪除所有出現的指定元素 5.查詢指定元素 6.對鍊錶進行氣泡排序 7.頭插 8.頭刪 9.尾插 10.尾刪 11.銷毀鍊錶 下面進行分布詳解 plinknode buynode datatype x 為新增節點開闢空間,...