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...