C++語言實(shí)現(xiàn)線性表之?dāng)?shù)組實(shí)例
本文實(shí)例講述了C++語言實(shí)現(xiàn)線性表之?dāng)?shù)組。分享給大家供大家參考。具體分析如下:
感覺用C++中的構(gòu)造函數(shù)、析構(gòu)函數(shù)等類的特點(diǎn)來描述一些數(shù)據(jù)結(jié)構(gòu)更加易讀,更加合理,便捷。但有一個問題,編譯器不支持模板的分離編譯,很不舒服
#include <iostream> using namespace std; template<class T> class CArray { public: CArray(const int &iMax); CArray(); ~CArray(); void Create(const int &iMax); void Destroy(); void Print(); bool IsEmpty(); bool IsFull(); void Append(const T &data); int GetLength(); int GetMax(); bool Delete(const int &pos); bool Insert(const int &pos,const T &data); void operator+=(const T &data); private: T *m_pArray; int m_len; int m_max; void Reset(); }; template<class T> CArray<T>::CArray(const int &iMax) { Create(iMax); } template<class T> CArray<T>::~CArray() { Destroy(); } template<class T> void CArray<T>::Create(const int &iMax) { m_pArray = new T[iMax]; m_max = iMax; m_len = 0; memset(m_pArray,0,sizeof(m_pArray)); } template<class T> void CArray<T>::Destroy() { delete [] m_pArray; } template<class T> void CArray<T>::Print() { if(IsEmpty()) { cout<<"沒有數(shù)據(jù)!"<<endl; } else { for(int ix =0 ; ix < m_len ; ++ix) { cout<<m_pArray[ix]<<","; } cout<<endl; } } template<class T> bool CArray<T>::IsEmpty() { if(0 == m_len) { return true; } else { return false; } } template<class T> bool CArray<T>::IsFull() { if(m_len == m_max) { Reset(); return false; } else { return false; } } template<class T> void CArray<T>::Append(const T &data) { if(!IsFull()) { ++m_len; m_pArray[m_len - 1] = data; } } template<class T> int CArray<T>::GetLength() { return m_len; } template<class T> bool CArray<T>::Delete(const int &pos) { if(pos > m_len || pos <= 0) { cout<<"位置不合法"<<endl; return false; } for(int ix = pos - 1 ; ix < m_len - 1 ; ++ ix) { m_pArray[ix] = m_pArray[ix + 1]; } --m_len; return true; } template<class T> void CArray<T>::operator+=(const T &data) { this->Append(data); } template<class T> bool CArray<T>::Insert(const int &pos,const T &data) { if(IsFull()) { return false; } else { for(int ix = m_len - 1 ; ix >= pos - 1 ; -- ix) { m_pArray[ix + 1] = m_pArray[ix]; } m_pArray[pos - 1] = data; ++m_len; return true; } } template<class T> CArray<T>::CArray() { Create(5); } template<class T> void CArray<T>::Reset() { T *pT = new T[m_max * 2]; memset(pT,0,sizeof(pT)); for(int ix = 0 ; ix < m_len ; ++ ix) { pT[ix] = m_pArray[ix]; } delete [] m_pArray; m_pArray = pT; m_max = m_max * 2; } template<class T> int CArray<T>::GetMax() { return m_max; }
希望本文所述對大家的C++程序設(shè)計有所幫助。
相關(guān)文章
vc提示unexpected end of file found的原因分析
這篇文章主要介紹了vc提示unexpected end of file found的原因分析,給出了幾點(diǎn)常見錯誤原因的分析,需要的朋友可以參考下2015-05-05C++實(shí)現(xiàn)LeetCode(557.翻轉(zhuǎn)字符串中的單詞之三)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(557.翻轉(zhuǎn)字符串中的單詞之三),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C語言實(shí)踐設(shè)計開發(fā)飛機(jī)游戲
飛機(jī)大戰(zhàn)想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機(jī)娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用C語言寫一個簡單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2022-02-02C++一個函數(shù)如何調(diào)用其他.cpp文件中的函數(shù)
這篇文章主要介紹了C++一個函數(shù)如何調(diào)用其他.cpp文件中的函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02C語言實(shí)現(xiàn)倉庫物資管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)倉庫物資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12C++基于EasyX框架實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
EasyX是針對C/C++的圖形庫,可以幫助使用C/C++語言的程序員快速上手圖形和游戲編程。本文將利用EasyX框架實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲,需要的可以參考一下2023-01-01