This book is intended for an introductory data structures class, either as a supplement to a traditional textbook or as a stand-alone resource. The intended audience is second-semester computer science students with knowledge of programming in C or C++. The focus is on fundamental concepts of data structures and algorithms and providing the necessary detail for students to implement the data structures presented. Basic data structures, including arrays, stacks, queues, linked lists, trees, binary search trees, tree balancing, hash tables, and graphs are presented, including the operations on those data structures. The algorithms are presented in a language that could be called “pseudocode with C++ tendencies.” In many cases, basic C++ is also provided. Sorting algorithms and an introduction to complexity analysis and Big-Oh notation are also included. Each chapter includes numerous pictures depicting the data structures and how the basic operations on the structures modify their contents.