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.