node_list_and(GSListPtr list1, GSListPtr list2)
node_list_and(GListPtr list1, GListPtr list2)
node_list_and(GSListPtr list1, GSListPtr list2){	GSListPtr result = NULL;	int lpc = 0;	for(lpc = 0; lpc < g_slist_length(list1); lpc++) {		node_t *node = (node_t*)g_slist_nth_data(list1, lpc);		node_t *new_node = NULL;		node_t *other_node = find_list_node(list2, node->details->id);		if(node == NULL || other_node == NULL) {			continue;						// merge node weights		} else if(node->weight < 0 || other_node->weight < 0) {			new_node = node_copy(node);			new_node->weight = -1;		} else {			new_node = node_copy(node);			new_node->weight = 				node->weight + other_node->weight;			if(new_node->weight != 0) {				new_node->weight = new_node->weight /2.0;			}		}		result = g_slist_append(result, new_node);	} 	return result;}