int CopyGList ( GList ls1, GList *ls2 ) |
{ |
if ( !ls1 ) *ls2 = NULL; /*复制空表*/ |
else |
{ |
if ( ! ( *ls2 = ( Glist ) malloc ( sizeof ( Glnode ) ) ) ) return 0; /*建表结点*/ |
( *ls2 )->tag = ls1->tag; |
if ( ls1->tag = = 0 ) ( *ls2 )->data = ls1->data; /*复制单元素*/ |
else |
{ |
CopyGList ( & ( ( *ls2 )->ptr.hp ), ls1->ptr.hp ); /*复制广义表ls1->ptr.hp 的一个副本*/ |
CopyGList ( & ( ( *ls2 )->ptr.tp ) , ls1->ptr.tp ); /*复制广义表ls1->ptr.tp 的一个副本*/ |
} |
} |
return 1; |
} |