0% found this document useful (0 votes)
56 views10 pages

Data Structures and Algorithms in Java (6th Edition)

The document provides information about the sixth edition of 'Data Structures and Algorithms in Java' by Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser, detailing its content, updates, and educational resources. Key changes in this edition include a redesigned code base, new figures, expanded exercises, and additional topics such as recursion and iterators. The book is intended for use in data structures and algorithms courses, catering to readers with a basic understanding of programming concepts.

Uploaded by

josewainai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views10 pages

Data Structures and Algorithms in Java (6th Edition)

The document provides information about the sixth edition of 'Data Structures and Algorithms in Java' by Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser, detailing its content, updates, and educational resources. Key changes in this edition include a redesigned code base, new figures, expanded exercises, and additional topics such as recursion and iterators. The book is intended for use in data structures and algorithms courses, catering to readers with a basic understanding of programming concepts.

Uploaded by

josewainai
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

This Book is Available on YakiBooki.

com

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
This Book is Available on YakiBooki.com

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
Data Structures and
Algorithms in Java™
Sixth Edition

Michael T. Goodrich
Department of Computer Science
University of California, Irvine

Roberto Tamassia
Department of Computer Science
Brown University

Michael H. Goldwasser
Department of Mathematics and Computer Science
Saint Louis University

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
Vice President and Executive Publisher Don Fowley
Executive Editor Beth Lang Golub
Assistant Marketing Manager Debbie Martin
Sponsoring Editor Mary O’Sullivan
Project Editor Ellen Keohane
Associate Production Manager Joyce Poh
Cover Designer Kenji Ngieng

This book was set in LATEX by the authors, and printed and bound by RR Donnelley. The
cover was printed by RR Donnelley.
Trademark Acknowledgments: Java is a trademark of Oracle Corporation. Unix ® is a
registered trademark in the United States and other countries, licensed through X/Open
Company, Ltd. PowerPoint ® is a trademark of Microsoft Corporation. All other product
names mentioned herein are the trademarks of their respective owners.
This book is printed on acid free paper.
Founded in 1807, John Wiley & Sons, Inc. has been a valued source of knowledge and
understanding for more than 200 years, helping people around the world meet their needs
and fulfill their aspirations. Our company is built on a foundation of principles that include
responsibility to the communities we serve and where we live and work. In 2008, we
launched a Corporate Citizenship Initiative, a global effort to address the environmental,
social, economic, and ethical challenges we face in our business. Among the issues we
are addressing are carbon impact, paper specifications and procurement, ethical conduct
within our business and among our vendors, and community and charitable support. For
more information, please visit our website: www.wiley.com/go/citizenship.
Copyright © 2014, 2010 John Wiley & Sons, Inc. All rights reserved. No part of this publi-
cation may be reproduced, stored in a retrieval system or transmitted in any form or by any
means, electronic, mechanical, photocopying, recording, scanning or otherwise, except
as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, with-
out either the prior written permission of the Publisher, or authorization through payment
of the appropriate per-copy fee to the Copyright Clearance Center, Inc. 222 Rosewood
Drive, Danvers, MA 01923, website www.copyright.com. Requests to the Publisher for
permission should be addressed to the Permissions Department, John Wiley & Sons, Inc.,
111 River Street, Hoboken, NJ 07030-5774, (201) 748-6011, fax (201) 748-6008, website
http://www.wiley.com/go/ permissions.
Evaluation copies are provided to qualified academics and professionals for review pur-
poses only, for use in their courses during the next academic year. These copies are licensed
and may not be sold or transferred to a third party. Upon completion of the review period,
please return the evaluation copy to Wiley. Return instructions and a free of charge return
mailing label are available at www.wiley.com/go/returnlabel. If you have chosen to adopt
this textbook for use in your course, please accept this book as your complimentary desk
copy. Outside of the United States, please contact your local sales representative.
ISBN: 978-1-118-77133-4 (paperback)
Printed in the United States of America
10 9 8 7 6 5 4 3 2 1

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
To Karen, Paul, Anna, and Jack
– Michael T. Goodrich

To Isabel
– Roberto Tamassia

To Susan, Calista, and Maya


– Michael H. Goldwasser

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
Preface to the Sixth Edition
Data Structures and Algorithms in Java provides an introduction to data structures
and algorithms, including their design, analysis, and implementation. The major
changes in this sixth edition include the following:
• We redesigned the entire code base to increase clarity of presentation and
consistency in style and convention, including reliance on type inference, as
introduced in Java 7, to reduce clutter when instantiating generic types.
• We added 38 new figures, and redesigned 144 existing figures.
• We revised and expanded exercises, bringing the grand total to 794 exercises!
We continue our approach of dividing them into reinforcement, creativity,
and project exercises. However, we have chosen not to reset the number-
ing scheme with each new category, thereby avoiding possible ambiguity
between exercises such as R-7.5, C-7.5, P-7.5.
• The introductory chapters contain additional examples of classes and inheri-
tance, increased discussion of Java’s generics framework, and expanded cov-
erage of cloning and equivalence testing in the context of data structures.
• A new chapter, dedicated to the topic of recursion, provides comprehensive
coverage of material that was previously divided within Chapters 3, 4, and
9 of the fifth edition, while newly introducing the use of recursion when
processing file systems.
• We provide a new empirical study of the efficiency of Java’s StringBuilder
class relative to the repeated concatenation of strings, and then discuss the
theoretical underpinnings of its amortized performance.
• We provide increased discussion of iterators, contrasting between so-called
lazy iterators and snapshot iterators, with examples of both styles of imple-
mentation for several data structures.
• We have increased the use of abstract base classes to reduce redundancy
when providing multiple implementations of a common interface, and the
use of nested classes to provide greater encapsulation for our data structures.
• We have included complete Java implementations for many data structures
and algorithms that were only described with pseudocode in earlier editions.
These new implementations include both array-based and linked-list-based
queue implementations, a heap-based adaptable priority queue, a bottom-up
heap construction, hash tables with either separate chaining or linear probing,
splay trees, dynamic programming for the least-common subsequence prob-
lem, a union-find data structure with path compression, breadth-first search
of a graph, the Floyd-Warshall algorithm for computing a graph’s transitive
closure, topological sorting of a DAG, and both the Prim-Jarnı́k and Kruskal
algorithms for computing a minimum spanning tree.

v
https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
vi Preface

Prerequisites
We assume that the reader is at least vaguely familiar with a high-level program-
ming language, such as C, C++, Python, or Java, and that he or she understands the
main constructs from such a high-level language, including:
• Variables and expressions
• Methods (also known as functions or procedures)
• Decision structures (such as if-statements and switch-statements)
• Iteration structures (for-loops and while-loops)
For readers who are familiar with these concepts, but not with how they are ex-
pressed in Java, we provide a primer on the Java language in Chapter 1. Still, this
book is primarily a data structures book, not a Java book; hence, it does not provide
a comprehensive treatment of Java. Nevertheless, we do not assume that the reader
is necessarily familiar with object-oriented design or with linked structures, such
as linked lists, for these topics are covered in the core chapters of this book.
In terms of mathematical background, we assume the reader is somewhat famil-
iar with topics from high-school mathematics. Even so, in Chapter 4, we discuss
the seven most-important functions for algorithm analysis. In fact, sections that use
something other than one of these seven functions are considered optional, and are
indicated with a star (⋆).

Online Resources
This book is accompanied by an extensive set of online resources, which can be
found at the following website:
www.wiley.com/college/goodrich
Included on this website is a collection of educational aids that augment the topics
of this book, for both students and instructors. For all readers, and especially for
students, we include the following resources:
• All Java source code presented in this book
• An appendix of useful mathematical facts
• PDF handouts of PowerPoint slides (four-per-page)
• A study guide with hints to exercises, indexed by problem number
For instructors using this book, we include the following additional teaching aids:
• Solutions to hundreds of the book’s exercises
• Color versions of all figures and illustrations from the book
• Slides in PowerPoint and PDF (one-per-page) format
The slides are fully editable, so as to allow an instructor using this book full free-
dom in customizing his or her presentations.

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
Preface vii

Use as a Textbook
The design and analysis of efficient data structures has long been recognized as a
core subject in computing. We feel that the central role of data structure design and
analysis in the curriculum is fully justified, given the importance of efficient data
structures and algorithms in most software systems, including the Web, operating
systems, databases, compilers, and scientific simulation systems.
This book is designed for use in a beginning-level data structures course, or
in an intermediate-level introduction to algorithms course. The chapters for this
book are organized to provide a pedagogical path that starts with the basics of Java
programming and object-oriented design. We then discuss concrete structures in-
cluding arrays and linked lists, and foundational techniques like algorithm analysis
and recursion. In the main portion of the book we present fundamental data struc-
tures and algorithms, concluding with a discussion of memory management. A
detailed table of contents follows this preface, beginning on page x.
To assist instructors in designing a course in the context of the IEEE/ACM
2013 Computing Curriculum, the following table describes curricular knowledge
units that are covered within this book.

Knowledge Unit Relevant Material


AL/Basic Analysis Chapter 4 and Sections 5.2 & 12.1.4
Sections 5.3.3, 12.1.1, 13.2.1, 13.4.2, 13.5,
AL/Algorithmic Strategies
14.6.2 & 14.7
AL/Fundamental Data Structures Sections 3.1.2, 5.1.3, 9.3, 9.4.1, 10.2, 11.1,
and Algorithms 13.2, and Chapters 12 & 14
Sections 7.2.1, 10.4, 11.2–11.6, 12.2.1, 13.3,
AL/Advanced Data Structures
14.5.1 & 15.3
AR/Memory System Organization
Chapter 15
and Architecture
DS/Sets, Relations, and Functions Sections 9.2.2 & 10.5
DS/Proof Techniques Sections 4.4, 5.2, 7.2.3, 9.3.4 & 12.3.1
DS/Basics of Counting Sections 2.2.3, 6.2.2, 8.2.2 & 12.1.4.
DS/Graphs and Trees Chapters 8 and 14
DS/Discrete Probability Sections 3.1.3, 10.2, 10.4.2 & 12.2.1
PL/Object-Oriented Programming Chapter 2 and Sections 7.3, 9.5.1 & 11.2.1
SDF/Algorithms and Design Sections 2.1, 4.3 & 12.1.1
SDF/Fundamental Programming
Chapters 1 & 5
Concepts
SDF/Fundamental Data Structures Chapters 3 & 6, and Sections 1.3, 9.1 & 10.1
SDF/Developmental Methods Sections 1.9 & 2.4
SE/Software Design Section 2.1
Mapping the IEEE/ACM 2013 Computing Curriculum knowledge units to coverage
within this book.

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/
viii Preface

About the Authors


Michael Goodrich received his Ph.D. in Computer Science from Purdue University
in 1987. He is currently a Chancellor’s Professor in the Department of Computer
Science at University of California, Irvine. Previously, he was a professor at Johns
Hopkins University. He is a Fulbright Scholar and a Fellow of the American As-
sociation for the Advancement of Science (AAAS), Association for Computing
Machinery (ACM), and Institute of Electrical and Electronics Engineers (IEEE).
He is a recipient of the IEEE Computer Society Technical Achievement Award,
the ACM Recognition of Service Award, and the Pond Award for Excellence in
Undergraduate Teaching.
Roberto Tamassia received his Ph.D. in Electrical and Computer Engineering
from the University of Illinois at Urbana–Champaign in 1988. He is the Plastech
Professor of Computer Science and the Chair of the Department of Computer Sci-
ence at Brown University. He is also the Director of Brown’s Center for Geometric
Computing. His research interests include information security, cryptography, anal-
ysis, design, and implementation of algorithms, graph drawing, and computational
geometry. He is a Fellow of the American Association for the Advancement of
Science (AAAS), Association for Computing Machinery (ACM) and Institute for
Electrical and Electronic Engineers (IEEE). He is a recipient of the IEEE Computer
Society Technical Achievement Award.
Michael Goldwasser received his Ph.D. in Computer Science from Stanford
University in 1997. He is currently Professor and Director of the Computer Science
program in the Department of Mathematics and Computer Science at Saint Louis
University. He was previously a faculty member in the Department of Computer
Science at Loyola University Chicago. His research interests focus on the design
and implementation of algorithms, having published work involving approximation
algorithms, online computation, computational biology, and computational geom-
etry. He is also active in the computer science education community.

Additional Books by These Authors


• Di Battista, Eades, Tamassia, and Tollis, Graph Drawing, Prentice Hall
• Goodrich, Tamassia, and Goldwasser, Data Structures and Algorithms in Python,
Wiley
• Goodrich, Tamassia, and Mount, Data Structures and Algorithms in C++, Wiley
• Goodrich and Tamassia, Algorithm Design: Foundations, Analysis, and Internet
Examples, Wiley
• Goodrich and Tamassia, Introduction to Computer Security, Addison-Wesley
• Goldwasser and Letscher, Object-Oriented Programming in Python, Prentice
Hall

https://www.yakibooki.com/download/data-structures-and-algorithms-in-java-6th-edition/

You might also like