**fig3_32.txt** /* 1*/ template /* 2*/ void /* 3*/ Cursor:: /* 4*/ Init_Space( ) /* 5*/ { /* 6*/ Cursor_Space = new Node [ Space_Size ]; /* 7*/ for( int i = 0; i < Space_Size; i++ ) /* 8*/ Cursor_Space[ i ].Next = i + 1; /* 9*/ Cursor_Space[ Space_Size - 1 ].Next = 0; /*10*/ } /* 1*/ template /* 2*/ Cursor:: /* 3*/ Cursor( unsigned int Max_Size ) /* 4*/ { /* 5*/ Space_Size = Max_Size; /* 6*/ Init_Space( ); /* 7*/ } /* 1*/ template /* 2*/ unsigned int /* 3*/ Cursor:: /* 4*/ Cnew( Element_Type E, unsigned int N ) /* 5*/ { /* 6*/ unsigned int P; /* 7*/ if( Cursor_Space == NULL ) /* 8*/ { /* 9*/ Space_Size = Default_Max_Size; /*10*/ Init_Space( ); /*11*/ } /*12*/ P = Cursor_Space[ 0 ].Next; /*13*/ Cursor_Space[ 0 ].Next = Cursor_Space[ P ].Next; /*14*/ if( P != 0 ) /*15*/ { /*16*/ Cursor_Space[ P ].Element = E; /*17*/ Cursor_Space[ P ].Next = N; /*18*/ } /*19*/ return P; /*20*/ } /* 1*/ template /* 2*/ void /* 3*/ Cursor:: /* 4*/ Cdelete( unsigned int P ) /* 5*/ { /* 6*/ Cursor_Space[ P ].Next = Cursor_Space[ 0 ].Next; /* 7*/ Cursor_Space[ 0 ].Next = P; /* 8*/ }