データ構造問題005:シングルチェーンテーブルのコピー(ANSI C)

624 ワード

データ構造問題005:シングルチェーンテーブルのコピー(ANSI C)
void clone_node( node_ptr src, node_ptr * dst )
{
	if( src != NULL )
	{
		*dst = ( node_ptr )malloc( sizeof( node ) );
		(*dst)->data = src->data;
	}
	else
		*dst = NULL;
}

void clone_llist( link_list lst_src, link_list * lst_dst )
{
	node_ptr t = NULL, p = NULL, s = NULL;
	
	if( lst_src == NULL )
		return;

	p = lst_src->next;
	*lst_dst = ( node_ptr )malloc( sizeof( node ) );
	t = *lst_dst;
	t->next = NULL;
	
	while( p != NULL )
	{
		clone_node( p, &s );
		s->next = t->next;
		t->next = s;
		t = s;
		p = p->next;
	}
}