Uses Kahn's Algorithm to put all the nodes into a linear list. Lets you include some custom data on each node.
Paul A. Jungwirth
MIT