c++ 模板

 
#include <iostream>
#include "SeqList.h"

using namespace std;

int main()
{
     SeqList<int> test(15);
     int array[15]={2,5,8,1,9,9,7,6,4,3,2,9,7,7,9};
     for(int i=0;i<15;i++){
          test.Insert(array[i],0);
}
     test.Insert(1,0);
     cout<<(test.Find(0)?"can't be found ":"Be found ")<< 0 << endl<<endl;
     test.Remove(7);
     test.Print();
     test.Remove(9);
     test.Print();
     test.Remove(0);
     test.Print();
     return 0;
}

#ifndef SEQLIST_H_INCLUDED
#define SEQLIST_H_INCLUDED
#include<iostream>
using namespace std;
const int DefaultSize=100;

template <class elemType>
class SeqList{
public:
     SeqList(int sz=DefaultSize)
          :m_nmaxsize(sz),m_ncurrentsize(-1){
          if(sz>0){
               m_elements=new elemType[m_nmaxsize];
          }
     }
     ~SeqList()
     {
          delete[] m_elements;
     }
     int Length() const
     {                         //get the length
          return m_ncurrentsize+1;
     }
     int Find(elemType x) const;                    //find the position of x
     int IsElement(elemType x) const;          //is it in the list
     int Insert(elemType x,int i);               //insert data
     int Remove(elemType x);                         //delete data
     int IsEmpty()
     {
          return m_ncurrentsize==-1;
     }
     int IsFull()
     {
          return m_ncurrentsize==m_nmaxsize-1;
     }
     elemType Get(int i)
     {                         //get the ith data
          return i<0||i>m_ncurrentsize?(cout<<"can't find the element"<<endl,0):m_elements[i];
     }
     void Print();

private:
     elemType *m_elements;
     const int m_nmaxsize;
     int m_ncurrentsize;
};

template <class elemType> int SeqList<elemType>::Find(elemType x) const{
     for(int i=0;i<m_ncurrentsize;i++)
          if(m_elements[i]==x)
               return i;
     cout<<"can't find the element you want to find"<<endl;
     return -1;
}

template <class elemType> int SeqList<elemType>::IsElement(elemType x) const{
     if(Find(x)==-1)
          return 0;
     return 1;
}

template <class elemType> int SeqList<elemType>::Insert(elemType x, int i){
     if(i<0||i>m_ncurrentsize+1||m_ncurrentsize==m_nmaxsize-1){
          cout<<"the operate is illegal"<<endl;
          return 0;
     }
     m_ncurrentsize++;
     for(int j=m_ncurrentsize;j>i;j--){
          m_elements[j]=m_elements[j-1];
     }
     m_elements[i]=x;
     return 1;
}

template <class elemType> int SeqList<elemType>::Remove(elemType x){
     int size=m_ncurrentsize;
     for(int i=0;i<m_ncurrentsize;){
          if(m_elements[i]==x){
               for(int j=i;j<m_ncurrentsize;j++){
                    m_elements[j]=m_elements[j+1];
               }
               m_ncurrentsize--;
               continue;
          }
          i++;
     }
     if(size==m_ncurrentsize){
          cout<<"can't find the element you want to remove"<<endl;
          return 0;
     }
     return 1;
}

template <class elemType> void SeqList<elemType>::Print(){
     for(int i=0;i<=m_ncurrentsize;i++)
          cout<<i+1<<": "<<m_elements[i]<<endl;
     cout<<endl<<endl;
}
#endif // SEQLIST_H_INCLUDED
原文地址:https://www.cnblogs.com/jianfengyun/p/5005318.html