WORD mov_tree(WORD sobj, WORD dobj, WORD dx, WORD dy) { WORD iobj; LONG sv_link; if (rcs_lock) { hndl_locked(); return (0); } else { dobj = posn_tree(dobj, dx, dy); if (sobj == dobj) { redo_trees(); return (dobj); } else { sv_link = tree_addr(sobj - 1); if (sobj < dobj) for (iobj = sobj; iobj < dobj; iobj++ ) LLSET(tree_ptr(iobj - 1), tree_addr(iobj)); else for (iobj = sobj ; iobj > dobj ; iobj-- ) LLSET(tree_ptr(iobj - 1), tree_addr(iobj - 2)); LLSET(tree_ptr(dobj - 1), sv_link); redo_trees(); return (dobj); } } }
VOID del_tree(WORD sobj) { WORD nobj, iobj; if (rcs_lock) hndl_locked(); else if (sobj != ROOT) { nobj = LWGET(RSH_NTREE(head)); LWSET(RSH_NTREE(head), --nobj); zap_objindex( tree_addr(sobj - 1), ROOT); for (iobj = sobj; iobj <= nobj; iobj++) LLSET(tree_ptr(iobj - 1), tree_addr(iobj)); redo_trees(); } }
LONG tree_addr(WORD n) { return LLGET(tree_ptr(n)); }
unique_ptr<week03::mst> week03::random_graph::build_mst() { unique_ptr<week03::mst> tree_ptr(new week03::mst(vertices_, size_)); return tree_ptr; }