P38test.cpp
上传用户:chaiyuqiu
上传日期:2022-08-03
资源大小:27k
文件大小:2k
源码类别:

数据结构

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <assert.h>
  3. #define DefaultSize 100
  4. template <class Type> class SeqList {
  5. public:
  6.     SeqList ( int size = DefaultSize );
  7.     ~SeqList() { delete[] data; }
  8.     int Length() const { return last + 1; }
  9.     int Find( Type & x ) const;
  10.     int IsIn ( Type & x);
  11.     int Insert ( Type & x, int i );
  12.     int Remove ( Type & x);
  13.     int Next ( Type & x );
  14.     int Prior ( Type & x );
  15.     int IsEmpty() { return last == -1; }
  16.     int IsFull()  { return last == MaxSize - 1; }
  17.     Type Get( int i ) { return i < 0 || i > last ? NULL:data[i]; }
  18.     void Print();
  19. private:
  20.     Type *data;
  21.     int MaxSize;
  22.     int last;
  23. }
  24. template < class Type > SeqList <Type>::SeqList( int size = DefaultSize ) {
  25.     assert ( size >= 0 );
  26.     if ( size > 0 ) {
  27.        MaxSize = size;  last = -1;
  28.        data = new Type[MaxSize];
  29.     }
  30. }
  31. template < class Type > int SeqList <Type>::Find( Type & x ) const {
  32.     int i = 0;
  33.     while ( i <= last && data[i] != x ) i++;
  34.     if ( i > last ) return -1;
  35.     else return i;
  36. }
  37. template < class Type > int SeqList <Type>::IsIn( Type & x ) {
  38.     int i = 0, found = 0;
  39.     while ( i <= last && !found)
  40. if ( data[i] != x ) i++;
  41. else found = 1;
  42.     return found;
  43. }
  44. template < class Type > int SeqList <Type>::Insert( Type & x, int i ) {
  45.     if ( i < 0 || i > last+1 || last == MaxSize - 1 ) return 0;
  46.     else {
  47. last++;
  48. for ( int j = last; j > i; j-- ) data[j] = data[j-1];
  49. data[i] = x;
  50. return 1;
  51.     }
  52. }
  53. template < class Type > int SeqList <Type>::Remove( Type & x ) {
  54.     int i = Find(x);
  55.     if ( i >= 0 ) {
  56. last--;
  57. for ( int j = i; j <= last; j++ ) data[j] = data[j+1];
  58. return 1;
  59.     }
  60. }
  61. template < class Type > int SeqList <Type>