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); }
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; }