public boolean tabu(Node node) { return depth[node.getIndex()] != -1; }
public Iterator<Node> getBreadthFirstIterator(boolean directed) { LinkedList<Node> l = new LinkedList<Node>(); Iterator<Node> it; elementLock.lock(); sg.elementLock.lock(); it = wrappedElement.getBreadthFirstIterator(directed); while (it.hasNext()) l.add(sg.getNode(it.next().getIndex())); sg.elementLock.unlock(); elementLock.unlock(); return l.iterator(); }
public Iterator<Node> getDepthFirstIterator(boolean directed) { LinkedList<Node> l = new LinkedList<Node>(); Iterator<Node> it; elementLock.lock(); sg.elementLock.lock(); it = wrappedElement.getDepthFirstIterator(); while (it.hasNext()) l.add(sg.getNode(it.next().getIndex())); sg.elementLock.unlock(); elementLock.unlock(); return l.iterator(); }
public Iterator<Node> getDepthFirstIterator(boolean directed) { LinkedList<Node> l = new LinkedList<Node>(); Iterator<Node> it; elementLock.lock(); sg.elementLock.lock(); it = wrappedElement.getDepthFirstIterator(); while (it.hasNext()) l.add(sg.getNode(it.next().getIndex())); sg.elementLock.unlock(); elementLock.unlock(); return l.iterator(); }
public Iterator<Node> getBreadthFirstIterator(boolean directed) { LinkedList<Node> l = new LinkedList<Node>(); Iterator<Node> it; elementLock.lock(); sg.elementLock.lock(); it = wrappedElement.getBreadthFirstIterator(directed); while (it.hasNext()) l.add(sg.getNode(it.next().getIndex())); sg.elementLock.unlock(); elementLock.unlock(); return l.iterator(); }
public Iterator<Node> getNeighborNodeIterator() { ArrayList<Node> l; Iterator<Node> it; elementLock.lock(); sg.elementLock.lock(); l = new ArrayList<Node>(wrappedElement.getDegree()); it = wrappedElement.getNeighborNodeIterator(); while (it.hasNext()) l.add(sg.getNode(it.next().getIndex())); sg.elementLock.unlock(); elementLock.unlock(); return l.iterator(); }
public <T extends Node> T getOpposite(Node node) { T n; if (node instanceof SynchronizedNode) node = ((SynchronizedNode) node).wrappedElement; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getOpposite(node).getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getNode0() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getNode0().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getNode1() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getNode1().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getSourceNode() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getSourceNode().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getTargetNode() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getTargetNode().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getSourceNode() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getSourceNode().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getTargetNode() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getTargetNode().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getNode0() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getNode0().getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getOpposite(Node node) { T n; if (node instanceof SynchronizedNode) node = ((SynchronizedNode) node).wrappedElement; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getOpposite(node).getIndex()); sg.elementLock.unlock(); return n; }
public <T extends Node> T getNode1() { T n; sg.elementLock.lock(); n = sg.getNode(wrappedElement.getNode1().getIndex()); sg.elementLock.unlock(); return n; }
public BreadthFirstIterator(Node startNode, boolean directed) { this.directed = directed; graph = startNode.getGraph(); int n = graph.getNodeCount(); queue = new Node[n]; depth = new int[n]; int s = startNode.getIndex(); for (int i = 0; i < n; i++) depth[i] = i == s ? 0 : -1; queue[0] = startNode; qHead = 0; qTail = 1; }
@SuppressWarnings("unchecked") public DepthFirstIterator(Node startNode, boolean directed) { this.directed = directed; graph = startNode.getGraph(); int n = graph.getNodeCount(); parent = new Node[n]; iterator = new Iterator[n]; depth = new int[n]; int s = startNode.getIndex(); for (int i = 0; i < n; i++) depth[i] = i == s ? 0 : -1; next = startNode; }
@SuppressWarnings("unchecked") public T next() { if (next == null) throw new NoSuchElementException(); iterator[next.getIndex()] = directed ? next.getLeavingEdgeIterator() : next.getEnteringEdgeIterator(); Node previous = next; gotoNext(); return (T) previous; }
@SuppressWarnings("unchecked") public T next() { if (next == null) throw new NoSuchElementException(); iterator[next.getIndex()] = directed ? next.getLeavingEdgeIterator() : next.getEnteringEdgeIterator(); Node previous = next; gotoNext(); return (T) previous; }