**fig3_38.txt** /* 1*/ // Remove X from the list. /* 2*/ // Return nonzero if deletion was successful. /* 3*/ // Header node is assumed. /* 4*/ template /* 5*/ int /* 6*/ List:: /* 7*/ Remove( const Element_Type & X ) /* 8*/ { /* 9*/ unsigned int Cell_To_Delete; /*10*/ if( Find_Previous( X ) ) /*11*/ { /*12*/ Cell_To_Delete = C.Cursor_Space[ Current_Pos ].Next; /*13*/ C.Cursor_Space[ Current_Pos ].Next = /*14*/ C.Cursor_Space[ Cell_To_Delete ].Next; /*15*/ C.Cdelete( Cell_To_Delete ); /*16*/ return 1; /*17*/ } /*18*/ return 0; /*19*/ } /* 1*/ // Insert X after the current position. /* 2*/ // X becomes the current element. /* 3*/ // Header implementation assumed. /* 4*/ template /* 5*/ void /* 6*/ List:: /* 7*/ Insert( const Element_Type & X ) /* 8*/ { /* 9*/ unsigned int P = /*10*/ C.Cnew( X, C.Cursor_Space[ Current_Pos ].Next ); /*11*/ if( P ) /*12*/ { /*13*/ C.Cursor_Space[ Current_Pos ].Next = P; /*14*/ Current_Pos = C.Cursor_Space[ Current_Pos ].Next; /*15*/ } /*16*/ else /*17*/ Error( "Out of space" ); /*18*/ }