void stacks(struct board_position pos, int k, int l, int turn, int *nc, char *child_ptr) { struct node root; struct node leaf; struct node ply_node; struct node stk[STK_SIZE]; struct board_position p; int i; int j; int v = -1; int flag; int ply = -1; init_new_node(pos, k, l, &root); ply++; stk[ply] = root; while (ply != -1) { if (ply < LEAF_DEPTH) { ply_node = stk[ply]; if (ply_node.it < ply_node.nc) { int index[2]; ply_node.it++; flag = 0; index[0] = ply_node.k; index[1] = ply_node.l; i = index[0]; j = index[1]; v = ply_node.child[ply_node.it - 1]; p = ply_node.pos; if (v == '0' && p.board[i][j] != WPAWN) { flag = leftJumpDown(p.board, turn, index); } else if (v == '1' && p.board[i][j] != WPAWN) { flag = rightJumpDown(p.board, turn, index); } else if (v == '2' && p.board[i][j] != BPAWN) { flag = leftJumpUp(p.board, turn, index); } else if (v == '3' && p.board[i][j] != BPAWN) { flag = rightJumpUp(p.board, turn, index); } if (flag) { init_new_node(p, index[0], index[1], &leaf); insert_into_array(p, *nc, child_ptr); (*nc)++; stk[ply] = ply_node; ply++; stk[ply] = leaf; } else { stk[ply] = ply_node; } } else { ply--; } } else { ply--; ply_node = stk[ply]; } } }
void insert_names(char* val) { names = init_new_node(names, val); }