Data Structures and Algorithms

Outline

The Lecture Notes is organized into eleven chapters. Besides the subject matter, each chapter includes a list of problems and a list of programming projects. Also, each chapter concludes with a list of references for further reading and exploration of the subject.

1.
Introduction
2.
Lists
3.
Dictionaries
4.
Binary Trees
5.
Balanced Trees
6.
Priority Queues
7.
Directed Graphs
8.
Undirected Graphs
9.
Sorting Methods
10.
Introduction to NP-Completeness
11.
References
Most of the material (including some figures, examples, and problems) is either sourced or adapted from classical textbooks on the subject. However about 10 percent of the material has been presented in a way different from any of the available sources. The primary sources include the following six textbooks. I would like to thank the authors of these classics. Special thanks to Professor Kruse for sending me all the material he could on this subject.
1.
A. V. Aho, J. E. Hopcroft, and J. D. Ullman. Data Structures and Algorithms. Addison-Wesley, Reading, Massachusetts, 1983.
2.
Gilles Brassard and Paul Bratley. Fundamentals of Algorithmics. Prentice-Hall, 1996. Indian Edition published by Prentice Hall of India, 1998.
3.
T. H. Cormen, C. E. Leiserson, and R. L. Rivest. Introduction to Algorithms. The MIT Press and McGraw-Hill Book Company, Cambridge, Massachusetts, 1990.
4.
D. E. Knuth. Fundamental Algorithms (The Art of Computer Programming: Volume 1). Second Edition, Narosa Publishing House, New Delhi, 1985.
5.
R. L. Kruse. Data Structures and Program Design in C. Prentice Hall of India, New Delhi, 1994.
6.
A. Weiss. Data Structures and Algorithms in C++. Addison-Wesley, Reading, Massachusetts, 1994.
Two topics that have been covered implicitly rather than in the form of independent chapters are: Algorithm Analysis Techniques (such as recurrence relations) and Algorithm Design Techniques (such as greedy strategy, dynamic programming, divide and conquer, backtracking, local search, etc.). Two topics which have not been covered adequately are: Memory management Techniques and Garbage Collection, and Secondary Storage Algorithms. Pointers to excellent sources for these topics are provided at appropriate places.

Home
Preface Acknowledgements Contents