Simple implementation of a worklist algorithm. A processing function is applied repeatedly to the first element in the worklist, as long as the stack is not empty.
The client class should mix-in this class and initialize the worklist
field and define the
processElement method. Then call the
providing a function that initializes the worklist.
Remove and return the first element to be processed from the worklist.
Process the current element from the worklist.
Run the iterative algorithm until the worklist remains empty. The initializer is run once before the loop starts and should initialize the worklist.