⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p43&47.cpp

📁 包含常见的数据结构的类和函数
💻 CPP
字号:
#include <stdio.h>#include <assert.h>#define DefaultSize 100template <class Type> class SeqList {public:    SeqList ( const int size = DefaultSize );    ~SeqList() { delete[] data; }    int Length() const { return last + 1; }    int Find( const Type & x ) const;    int IsIn ( Type & x);    int Insert ( Type & x, int i );    int Remove ( Type & x);    int Next ( Type & x );    int Prior ( Type & x );    int IsEmpty()const { return last == -1; }    int IsFull() const { return last == MaxSize - 1; }    Type Get( int i ) { return i < 0 || i > last ? NULL:data[i]; }    void Print();private:    Type *data;    int MaxSize;    int last;};template < class Type > SeqList <Type>::SeqList( const int size  ) {    assert ( size >= 0 );    if ( size > 0 ) {       MaxSize = size;  last = -1;       data = new Type[MaxSize];    }};template < class Type > int SeqList <Type>::Find(const Type & x ) const {    int i = 0;    while ( i <= last && data[i] != x ) i++;    if ( i > last ) return -1;    else return i;}template < class Type > int SeqList <Type>::IsIn( Type & x ) {    int i = 0, found = 0;    while ( i <= last && !found)	if ( data[i] != x ) i++;	else found = 1;    return found;}template < class Type > int SeqList <Type>::Insert(  Type & x, int i ) {    if ( i < 0 || i > last+1 || last == MaxSize - 1 ) return 0;    else {	last++;	for ( int j = last; j > i; j-- ) data[j] = data[j-1];	data[i] = x;	return 1;    }}template < class Type > int SeqList <Type>::Remove( Type & x ) {    int i = Find(x);    if ( i >= 0 ) {	last--;	for ( int j = i; j <= last; j++ ) data[j] = data[j+1];	return 1;    }    return 0;}template < class Type > int SeqList <Type>::Next( Type & x ) {    int i = Find(x);    if ( i >= 0 && i < last ) return i+1;    else return -1;}template < class Type > int SeqList <Type>::Prior( Type & x ) {    int i = Find(x);    if ( i > 0 && i <= last ) return i-1;    else return -1;}template < class Type > void Union( SeqList <Type> & LA, SeqList <Type> & LB ) {    int n = LA.Length(); int m = LB.Length();    for ( int i=0; i <= m; i++ ) {	Type x = LB.Get(i);	int k = LA.Find(x);	if ( k == -1 ) { LA.Insert( x, n );  n++;}    }}template < class Type > void Intersection ( SeqList <Type> & LA, SeqList <Type> & LB ) {    int n = LA.Length();  int m = LB.Length();  int i = 0;    while ( i < n ) {	Type x = LA.Get(i);	int k = LB.Find(x);	if ( k == -1 ) { LA.Remove(x); n--; }	else i++;    }}template < class Type > void SeqList <Type>::Print() {    if ( last == -1 ) cout << "It is empty" ;    else for ( int i=0; i<=last; cout << "  data[" << i++ << "] = " << data[i] );    cout << endl;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -