示例#1
0
ysKernel *ysKernelFactory::create_kernel(const char *name) const
{
  /* parse "name:p1:p2...:pN" into name and array of parameters */
  int num = count_delimiters(name, ':');
  char *root = strdup(name);
  double *params = new double[num];
  for (int n = num - 1; n >= 0; n--) {
    char *colon = strrchr(root, ':');
    *colon = '\0';
    params[n] = atof(colon+1);
  }

  ysKernel *new_kernel = NULL;
  /* lookup */
  const ysKernel *prototype = lookup(root);
  if (prototype == NULL) goto bug_out;
  /* copy */
  new_kernel = prototype->clone();
  /* set params */
  if (new_kernel->set_params(num, params)) {
    delete new_kernel;
    new_kernel = NULL;
  }
 bug_out:
  free(root);
  delete[] params;
  return new_kernel;
}
void driver_for_convert_string_to_tree()
{
	printf("INPUT THE A BST IN THE FOLLOWINT FORMAT:\n FOR A TREE WITH 1 AS ROOT AND 2&3 AS ITS LEFT AND RIGHT CHILDREN ENTER THE INPUT AS\n([1,1],[2,1],[3,1])\n");
	char *string = (char*)malloc(1024*sizeof(char));
	gets_s(string,1024);
	int *position_of_delimiters = count_delimiters(string);
	NODE *root = (NODE*)malloc(sizeof(NODE));
	convert_string_to_tree(string,0,position_of_delimiters,root);
	free(position_of_delimiters);
	int node1_value, node2_value;
	printf("ENTER THE NODE VALUES:\n");
	scanf_s("%d",&node1_value);
	scanf_s("%d",&node2_value);
	NODE *node1 = find_node(root, node1_value);
	NODE *node2 = find_node(root,node2_value);
	if(node1==NULL || node2==NULL)
	{
		printf("INVALID INPUT");
		getchar();
		return;
	}
	printf("LEAST COMMON ANCESTOR IS %d\n",find_least_common_ancestor(node1,node2)->data);
	delete_tree(root);
	free(string);
}
示例#3
0
NODE* driver_for_convert_string_to_tree(char *string)
{
	int *position_of_delimiters;
	position_of_delimiters = count_delimiters(string);
	NODE *root = (NODE*)malloc(sizeof(NODE));
	convert_string_to_tree(string,0,position_of_delimiters,root);
	free(position_of_delimiters);
	return root;
}