As mentioned earlier, the implementation language used in this book is Java. There are several important reasons for this. First, Java is object-oriented; hence, it incorporates the important software-engineering concepts that allow for code reuse. In addition, Java has a concise syntax like C, but it avoids a number of mechanisms that typically confuse beginning programmers, such as pointer arithmetic, unions and structs, and loosely typed expressions. In addition, it builds in mechanisms for easily performing several tasks that are difficult to implement using C and C++, including window and mouse management, memory management and garbage collection, socket communication, and multiprogramming via threads. More importantly, unlike C and C++, Java is designed to be platform-independent, which is a feature that can greatly simplify class project implementation. Moreover, Java is supported by all modern Web browsers. By using Java as our implementation language, we are using a language that is simple, versatile, and fun.
Our use of Java is inspired by more than just the language itself, however. We present fundamental data structure interfaces in this book so as to conform to application programmer interfaces (APIs) of data structures libraries in Java, including the Java Collections Framework, introduced in the Java 2 platform, and JDSL, the data structures library in Java developed by the authors and their collaborators. Our use of terms such as ``container,'' ``sequence,'' and ``iterator'' are consistent with terminology used by these libraries, with ``container'' being synonymous with ``collection.'' Thus, in addition to conveying the essentials of data structure design and implementation, this book also implicitly provides an introduction to data structure software libraries.