All pastes #404947 Raw Edit

Mine

public text v1 · immutable
·published 2007-03-21 11:37 UTC
rendered paste body
    /**
     * Returns an iterator of vertices adjacent to v.
     * Time complexity for iterating over all vertices: O(n),
     * where n is the number of adjacent vertices.
     * 
     * @param  v vertex.
     * @return an iterator of vertices adjacent to v.
     * @throws IllegalArgumentException if v is out of range.
     */
    public VertexIterator adjacentVertices(int v) {
        if(v < 0  || v >= numVertices) {
            throw new IllegalArgumentException("Out of range");
        }
        return new AdjacentVerticesIterator(v);    
    }
    
    /**
     * Testar iteratorn
     */
    public void test(int v) {
        VertexIterator test = adjacentVertices(v);
        System.out.println(test.next());
    }
        
    private class AdjacentVerticesIterator implements VertexIterator {
        int nextPos = 0;
        int vertex;
        
        AdjacentVerticesIterator(int v) {
            vertex = v;
            
         }
         
//         private void findNext() {
//             nextPos++;
//             while (nextPos < numVertices && adjacentVertices[vertex] == null)
//                 nextPos++;
//         }        
        
        public boolean hasNext() {
            return nextPos < adjacentVertices[vertex].size();
        }
        
        public int next() {
            int pos = nextPos;
            if (pos >= adjacentVertices[vertex].size()) {
                throw new NoSuchElementException("This iterator has no more elements.");
            }
            pos++;
            return pos; //return the element at this position. but how ?
        }
    }