www.pudn.com > compressor.zip > Seqlist.h
#ifndef SeqList_H #define SeqList_H #includetemplate class SeqList { private: T *data; int MaxSize; int last; public: SeqList(int MaxSize=100); ~SeqList(){delete []data;MaxSize=0;last=-1;} int Length() const {return last+1;} int Find(const T& x); int IsIn(T& x) const; int Insert(T& x,int i); int Remove(T& x); int Next(T& x); int Prior(T& x); int IsEmpty() {return last==-1;} int IsFull() {return last==MaxSize-1;} void SetSize(int s){MaxSize = s;} T& operator [](int i) {return data[i];} const T& operator[](int index)const { assert(index>=0 && index last?NULL:data[i];} friend ostream& operator << (ostream& os,const SeqList & p); friend istream& operator >> (istream& is,SeqList & p); }; template SeqList ::SeqList(int sz) { if(sz>0){ MaxSize = sz; last =-1; data = new T[MaxSize]; } } template int SeqList ::Find (const T& item) { for(int i=0;i<=last;i++) if(data[i]==item) return i; return -1; } template int SeqList ::IsIn(T& x) const { int i=0,found=0; while(i<=last && !found) if(data[i]!=x) i++; else found=1; return found; } template int SeqList ::Insert(T& x,int i) { if(i<0||i>last+1||i>MaxSize) return 0; else{ last++; for(int j=last;j>i;j--) data[j]=data[j-1]; data[i]=x; return 1; } } template int SeqList ::Remove(T& x) { int i=Find(x); if(i>=0){ for(int j=i;j<=last;j++) data[j] = data[j+1]; last--; return 1; } return 0; } template int SeqList ::Next(T& x) { int i=Find(x); if(x>=0 && i int SeqList ::Prior(T& x) { int i=Find(x); if(i>0 && i ostream& operator << (ostream& os,const SeqList & p) { for(int i=0;i<=p.last;i++) os< istream& operator >> (istream& is,SeqList & p) { T item; is>>item; p.Insert(item,p.last+1); return is; } #endif