Algorithms and data structures design, correctness and analysis - Kingston (International computer science series, 1997)