Acknowledgements My sincerest thanks go to Martin Henson for many stimulating discussions.He also read the drafts of some chapters and I found his constructive comments and criticisms invaluable. I acknowledge the assistance of the Department of Computer Science at the University of Essex in providing computer facilities and support while this book was being produced. I thank all the students attending the course on data structures and algorithms at the University of Essex who provided me with many useful comments on the material presented in the book. I also greatly appreciate all the help and effort that the secretaries,Marisa Bostock and Ann Cook,put into the typing of the first draft. And last but not least,I am most grateful to my wife,Hengameh,who was my main source of encouragement whenever my enthusiasm waned,and for her continued support and forbearance. Colchester Manoochehr Azmoodeh 1990 xiv