int Create ( GList *ls, char * S ) { Glist p; char *sub; if StrEmpty ( S ) *ls = NULL; else { if ( ! ( *ls = ( GList ) malloc ( sizeof ( GLNode ) ) ) ) return 0; if ( StrLength ( S ) = = 1 ) { ( *ls )->tag = 0; ( *ls )->data = S; } else { ( *ls )->tag = 1; p = *ls; hsub =SubStr ( S,2,StrLength ( S )-2 ); do { sever ( sub,hsub ); Create ( & ( p->ptr.hp ), sub ); q = p; if ( !StrEmpty ( sub ) ) { if ( ! ( p = ( GList ) malloc ( sizeof ( GLNode ) ) ) ) return 0;; p->tag = 1; q->ptr.tp = p; } } while ( !StrEmpty ( sub ) ); q->ptr.tp = NULL; } } return 1; }