最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++語言實現(xiàn)線性表之數(shù)組實例

 更新時間:2015年04月20日 11:14:50   作者:司青  
這篇文章主要介紹了C++語言實現(xiàn)線性表之數(shù)組,實例分析了C++實現(xiàn)數(shù)組形式線性表的原理與方法,需要的朋友可以參考下

本文實例講述了C++語言實現(xiàn)線性表之數(shù)組。分享給大家供大家參考。具體分析如下:

感覺用C++中的構造函數(shù)、析構函數(shù)等類的特點來描述一些數(shù)據(jù)結構更加易讀,更加合理,便捷。但有一個問題,編譯器不支持模板的分離編譯,很不舒服

#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++程序設計有所幫助。

相關文章

  • C語言數(shù)據(jù)結構順序表的進階講解

    C語言數(shù)據(jù)結構順序表的進階講解

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-04-04
  • C語言代碼 模塊化實現(xiàn)三子棋

    C語言代碼 模塊化實現(xiàn)三子棋

    這篇文章主要為大家詳細介紹了C語言 模塊化實現(xiàn)三子棋程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解C++中指針和引用的區(qū)別

    詳解C++中指針和引用的區(qū)別

    這篇文章主要介紹了C++中指針和引用的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • C++標準模板庫map的常用操作

    C++標準模板庫map的常用操作

    今天小編就為大家分享一篇關于C++標準模板庫map的常用操作,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C 語言常用方法技巧

    C 語言常用方法技巧

    本文主要介紹了C語言常用方法技巧。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 簡單介紹C++中變量的引用

    簡單介紹C++中變量的引用

    這篇文章主要簡單介紹了C++中變量的引用,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C語言中printf的兩種輸出對齊方式

    C語言中printf的兩種輸出對齊方式

    C語言中左對齊是C語言的默認輸出方式,右對齊是一種特殊的輸出方式,左對齊和右對齊都對應著一個已知的輸出寬度,輸出的字符串根據(jù)字符串的長度在寬度上進行補充,補充字符是空格,在使用printf函數(shù)輸出時,需要在格式字符串中使用%-*s和%*s的格式來分別表示
    2024-02-02
  • C語言實現(xiàn)班級學生管理系統(tǒng)

    C語言實現(xiàn)班級學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)班級學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C程序中Ubuntu、stm32的內(nèi)存分配問題

    C程序中Ubuntu、stm32的內(nèi)存分配問題

    這篇文章主要介紹了C程序中Ubuntu、stm32的內(nèi)存分配問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 詳解 linux c++的編譯器g++的基本使用

    詳解 linux c++的編譯器g++的基本使用

    這篇文章主要介紹了詳解 linux c++的編譯器g++的基本使用的相關資料,需要的朋友可以參考下
    2017-01-01

最新評論

班戈县| 柳州市| 蒙阴县| 延边| 西吉县| 法库县| 澜沧| 遂平县| 榆树市| 盐津县| 胶州市| 法库县| 济源市| 白水县| 儋州市| 托克逊县| 格尔木市| 东明县| 富宁县| 鄄城县| 礼泉县| 临颍县| 肃宁县| 平阳县| 徐闻县| 林芝县| 辽宁省| 临邑县| 隆化县| 磴口县| 洞头县| 丰县| 清新县| 伊宁市| 通辽市| 临江市| 陆川县| 炉霍县| 始兴县| 河池市| 图们市|