SeqList:
#ifndef SEQLIST_H_ #define SEQLIST_H_ const int Size = 100; template<typename Type> class SeqList { private: Type *m_elements; const int m_maxsize; int m_currentsize; public: SeqList(int sz=Size):m_maxsize(sz),m_currentsize(-1) { if(sz>0) m_elements = new Type[m_maxsize]; } ~SeqList() {delete[] m_elements;} int Length() const {return m_currentsize+1;} //get the length int Find(Type x) const; //find the position of x int IsElement(Type x) const; //is x in the list int Insert(Type x,int i); //insert x int Remove(Type x); //delete x int IsEmpty() {return m_currentsize==-1;} int Isfull() {return m_currentsize == m_maxsize-1;} Type get(int i) { return i<0 || i>m_maxsize?(cout<<"can‘t find the element"<<endl,0):m_element[i]; } void Print(); }; template<typename Type> int SeqList<Type>::Find(Type x) const { for(int i=0;i<m_currentsize;i++) { if(m_elements[i] == x) return i; } cout<<"can‘t find the element you want to find!"<<endl; return -1; } template<typename Type> int SeqList<Type>::IsElement(Type x) const { if(Find(x)==-1) return 0; return 1; } template<typename Type> int SeqList<Type>::Insert(Type x,int i) { if(i<0 || i>m_currentsize+1 || m_currentsize == m_maxsize -1) { cout<<"the operate is illegal!"<<endl; return 0; } m_currentsize++; for(int j=m_currentsize;j>i;j--) m_elements[j] = m_elements[j-1]; m_elements[i] = x; return 1; } template<typename Type> int SeqList<Type>::Remove(Type x) { int count = m_currentsize; for(int i=0;i<m_currentsize;) { if(m_elements[i]==x) { for(int j=i;j<m_currentsize;j++) m_elements[j] = m_elements[j+1]; m_currentsize--; continue; } i++; } if(count == m_currentsize) { cout<<"can‘t find the element you want to remove!"<<endl; return 0; } return 1; } template<typename Type> void SeqList<Type>::Print() { for(int i=0;i<m_currentsize+1;i++) cout<<i+1<<":\t"<<m_elements[i]<<endl; cout<<endl; } #endif
Test:
#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.Print(); 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; }
原文:http://www.cnblogs.com/jx-yangbo/p/4839366.html