C++言語実装リニアテーブルの配列例
3350 ワード
この例では,C++言語実装線形テーブルの配列について述べる.皆さんの参考にしてください.具体的な分析は以下の通りである.
C++の中の構造関数、構造関数などのクラスの特徴でいくつかのデータ構造を説明するのはもっと読みやすくて、もっと合理的で、便利だと感じます.しかし、コンパイラがテンプレートの分離コンパイルをサポートしていないという問題があり、気分が悪いです.
本稿で述べたことが皆さんのC++プログラム設計に役立つことを願っています.
C++の中の構造関数、構造関数などのクラスの特徴でいくつかのデータ構造を説明するのはもっと読みやすくて、もっと合理的で、便利だと感じます.しかし、コンパイラがテンプレートの分離コンパイルをサポートしていないという問題があり、気分が悪いです.
#include
using namespace std;
template
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
CArray::CArray(const int &iMax)
{
Create(iMax);
}
template
CArray::~CArray()
{
Destroy();
}
template
void CArray::Create(const int &iMax)
{
m_pArray = new T[iMax];
m_max = iMax;
m_len = 0;
memset(m_pArray,0,sizeof(m_pArray));
}
template
void CArray::Destroy()
{
delete [] m_pArray;
}
template
void CArray::Print()
{
if(IsEmpty())
{
cout<
bool CArray::IsEmpty()
{
if(0 == m_len)
{
return true;
}
else
{
return false;
}
}
template
bool CArray::IsFull()
{
if(m_len == m_max)
{
Reset();
return false;
}
else
{
return false;
}
}
template
void CArray::Append(const T &data)
{
if(!IsFull())
{
++m_len;
m_pArray[m_len - 1] = data;
}
}
template
int CArray::GetLength()
{
return m_len;
}
template
bool CArray::Delete(const int &pos)
{
if(pos > m_len || pos <= 0)
{
cout<
void CArray::operator+=(const T &data)
{
this->Append(data);
}
template
bool CArray::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
CArray::CArray()
{
Create(5);
}
template
void CArray::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
int CArray::GetMax()
{
return m_max;
}
本稿で述べたことが皆さんのC++プログラム設計に役立つことを願っています.