CList模板鍊錶

2021-08-03 16:29:27 字數 1679 閱讀 9155

stl為我們提供了各種容器,像vector、list、stack、deque、array、map,其模板的泛型化更是極大地方便了程式的編寫過程。

以stl中的list為例,它為我們提供了許多操作,如下圖:

其中包括我們經常要使用的一些鍊錶方法能像push_back、push_front 、insert、remove、size、reverse等。

下面**為 clist模板類,實現list的主要的功能,以加深模板程式設計的理解。

/**clist.h

*date 2017-7-11

*@author xwz

*compiler: dev c++

*/#ifndef clist_h_

#define clist_h_

templateclass clist

}listnode;

listnode* m_phead; //頭結點

int m_length; //鍊錶長度

public:

clist():m_phead(null),m_length(0)

void addtail(const t val)

++m_length; }

void addhead(const t val)

++m_length; }

~clist()

delete m_phead;

m_phead = null;

} }int getlength() const

bool empty() const

void print() const

} cout << endl;

} void erase(int pos)

if(i==1)

m_phead = m_phead->next;

else

temp->next = p->next;

delete p;

--m_length;

}}

void remove(const t val)

if(p == m_phead)

m_phead = m_phead->next;

else

temp->next = p->next;

delete p;

--m_length;

} }void insert(int pos,const t val)

else

newnode->next = p;

temp->next=newnode;

} ++m_length;

} }void reverse()

m_phead = pleft; //修改轉置後的頭結點位置 }

};#endif // !clist_h_

測試**:

模板 鍊錶模板 有序鍊錶模板及測試

鍊錶模板 c 程式設計 資料結構與程式設計方法 16.2作為抽象資料型別的鍊錶 header file linkedlist.h ifndef linkedlist h define linkedlist h template struct nodetype template class linke...

C list(雙向環狀鍊錶)的常用操作

c stl list操作,list採用link儲存,參考資料 侯捷,stl原始碼剖析 將 first,last 內的所有元素移動到position之前,操作符的優先順序 操作符 carry中的元素轉存到counter中 if i fill fill 最後對全體的counter進行merge for ...

模板順序鍊錶

對於模板這個東西,我感覺好像概念清楚,但一直沒機會動手寫一寫。今天終於動手了,寫了才知道自己還是有很多相關的東西不知道的。今天寫了乙個模板順序鍊錶,還花了不少時間,以後有機會將會寫更多的模板資料結構。下面的資料結構支援記憶體自動增長。有查詢,插入,刪除,賦值等簡單基本操作 ifndef afx xt...