顺序表
2012-04-08 22:42 Rollen Holt 阅读(2531) 评论(0) 编辑 收藏 举报Seqlist.h
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; //find the position of x int IsElement(Type x) const; //is it in the list int Insert(Type x,int i); //insert data int Remove(Type x); //delete data int IsEmpty(){ return m_ncurrentsize==-1; } int IsFull(){ return m_ncurrentsize==m_nmaxsize-1; } Type 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: 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'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_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 <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'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_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'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://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================