Chapter 1 顺序表

//SeqList.h 

#include <iostream> using namespace std; const int DefaultSize=100; template <typename Type> class SeqList{ public: SeqList(int sz=DefaultSize):m_nmaxsize(sz),m_ncurrentsize(-1) { if(sz>0){ m_elements=new Type[m_nmaxsize]; }
} ~SeqList(){ delete [] m_elements; } int Length() const{ //get the length return m_ncurrentsize+1; } int Find(Type x) const; //findthe position of x int IsElement(Type x) const; //isit in the list int Insert(Type x,int i); //insertdata int Remove(Type x); //deletedata int IsEmpty() { return m_ncurrentsize==-1; } int IsFull(){ return m_ncurrentsize==m_nmaxsize-1; } Type Get(int i) { //getthe ith data return i<0||i>m_ncurrentsize?(cout<<"can'tfind the element"<<endl,0):m_elements[i]; } void Print(); private: Type* m_elements; const int m_nmaxsize; int m_ncurrentsize; }; template< typename Type > int SeqList<Type>::Find(Type x) const{ for(int i=0;i<m_ncurrentsize;i++) if(m_elements[i]==x) return i; cout<<"can'tfind 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; else return 1; } template< typename Type > int SeqList<Type>::Insert(Type x, int i){ if(i<0||i>m_ncurrentsize+1||m_ncurrentsize==m_nmaxsize-1){ cout<<"theoperate 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<typename Type> int SeqList<Type>::Remove(Type 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'tfind the element you want to remove"<<endl; return 0; } return 1; } template< typename Type > void SeqList<Type>::Print(){ for(int i=0;i<=m_ncurrentsize;i++) cout<<i+1<<":\t"<<m_elements[i]<<endl; cout<<endl<<endl; }

 

// Test.cpp

#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'tbe found ":"Befound ")<<0 << endl<<endl;
test.Remove(7);
test.Print();
test.Remove(9);
test.Print();
test.Remove(0);
test.Print();
return 0;
}

 

$ ./Ex_Seqlist
theoperate is illegal
can'tfind the element you want to find
can'tbe found 0

1:    9
2:    9
3:    2
4:    3
5:    4
6:    6
7:    9
8:    9
9:    1
10:    8
11:    5
12:    2


1:    2
2:    3
3:    4
4:    6
5:    1
6:    8
7:    5
8:    2


can'tfind the element you want to remove
1:    2
2:    3
3:    4
4:    6
5:    1
6:    8
7:    5
8:    2

posted @ 2017-03-14 19:36  souwang  阅读(115)  评论(0编辑  收藏  举报