@fengjingchao This is good. But in the original algorithm, Tarjan seemed to use neighbor.sccIndex to update node.sccLowlink. So it will be 

if neighbor.<b>sccIndex</b> < node.sccLowlink {
        node.sccLowlink = neighbor.<b>sccIndex</b>
}

But I think either way works. Besides, I think if you use `neighbor.sccLowlink`, then it will make 2 more guarantees:
1) All nodes that belongs to one SCC have the same `sccLowlink`.
2) If the `neighbor` is already in SccStack, then it must have a equal or less `sccLowlink`. Which means it is always <b>true</b> that 
` neighbor.sccLowlink <= node.sccLowlink`

See:
[wiki](http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm)
and
[a discussion, especially the 1st answer](http://cs.stackexchange.com/questions/11148/tarjans-strongly-connected-component-algorithm)