手机
当前位置:查字典教程网 >编程开发 >C语言 >C++语言实现线性表之数组实例
C++语言实现线性表之数组实例
摘要:本文实例讲述了C++语言实现线性表之数组。分享给大家供大家参考。具体分析如下:感觉用C++中的构造函数、析构函数等类的特点来描述一些数据结构...

本文实例讲述了C++语言实现线性表之数组。分享给大家供大家参考。具体分析如下:

感觉用C++中的构造函数、析构函数等类的特点来描述一些数据结构更加易读,更加合理,便捷。但有一个问题,编译器不支持模板的分离编译,很不舒服

#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<<"没有数据!"<<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++程序设计有所帮助。

【C++语言实现线性表之数组实例】相关文章:

用C++实现一个链式栈的实例代码

C++实现基数排序的方法详解

C语言 实现N阶乘的程序代码

C++求斐波那契数的实例代码

C++实现:螺旋矩阵的实例代码

用C语言实现单链表的各种操作(二)

c语言中数组名a和&a详细介绍

用C# 实现鼠标框选效果的实现代码

C++中返回指向函数的指针示例

C语言数组指针的小例子

精品推荐
分类导航