《Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》是著名作者John Lewis與William Loftus作為其一流的CS1教材“Java Software Solutions:Foundations of Program Design”的姊妹篇。盡管《Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》的英文名為“Java Software Structures: Designing and Using Data Structures”,但正如作者在前言中所說(shuō)的那樣,《Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》其實(shí)是一本可作為“數(shù)據(jù)結(jié)構(gòu)與算法”課程的教材。根據(jù)使用了前兩版的教師和學(xué)生的反饋,作者在第3版中進(jìn)行了重大修改,以適應(yīng)教學(xué)的需要?!禞ava軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》關(guān)注的是數(shù)據(jù)結(jié)構(gòu)和算法背后的核心設(shè)計(jì)問(wèn)題。在展現(xiàn)每種集合時(shí),《Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》都是先探討該集合的一般概念,接著再討論該集合在問(wèn)題求解中的用法,最后討論了各種候選實(shí)現(xiàn)方案。因此,《Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)(第3版)》是“數(shù)據(jù)結(jié)構(gòu)與算法”Java語(yǔ)言描述課程的理想教材。
Chapter I Introduction 1.1 Software Quality Correctness Reliability Robustness Usability Maintainability Reusability Portability Efficiency Quality Issues 1.2 Data Structures A Physical Example Containers as Objects Chapter 2 Analysis of Algorlthms 2.1 Algorithm Efficiency 2.2 Growth Functions and Big-OH Notation 2.3 Comparing Growth Functions 2.4 Determining Time Complexity Analyzing Loop Execution Nested Loops Method Calls Chapter 3 Collections 3.1 Introduction to Collections Abstract Data Types, The lava Collections API 3.2 A Stack Collection 3.3 Crucial OO Concepts Inheritance Class Hierarchies The Object Class Polymorphism References and Class Hierarchies Generices 3.4 A Stack ADT Interfaces 3.5 Using Stacks: Evaluating Postfix Expressions 3.6 Exceoflons Exception Messages The try Statement Exception Propagation 3.7 Implementing a Stack: Wlth Arrays Managing Capacity 3.8 The ArrayStaak Class The Constructors The push Operation The pop Operation The peek Operation Other Operations Chapter 4 Llnked Structures 4.1 References as Unks 4.2 Managing Linked Lists Accessing Elements Inserting Nodes Deleting Nodes Sentinel Nodes 4.3 Elements Without Links Doubly Linked Lists 4.4 Implementing a Stack: Wlth Links The LinkedStack Class The push Operation The pop Operation Other Operations 4.5 Using Stacks: Traversing a Maze 4.6 Implementing Stacks: The java. util. Stack Class Unique Operations Inheritance and Implementation Chapter 5 Queues 5.1 A Queue ADT 5.2 Using Queues: Code Keys 5.3 Using Queues: Ticket Counter Simulation 5.4 Implementing Queues: With Links The remove Operation The contains Operation The ieeraeor Operation The add Operation for an Ordered List The enque Operation The dequeue Operation Other Operations 5.5 Implementing Queues: With Arrays The enqueue Operation The dequeue Operation Other Operations Chapter 6 Lists 6.1 A List ADT Iterators Adding Elements to a List Interfaces and Polymorphism 6.2 Using Ordered Lists: Tournament Maker 6.3 Using Indexed Lists: The Josephus Problem 6.4 Implementing Queues: With Arrays The enqueue Operation The dequeue Operation Other Operations Operations Particular to Unordered Lists The addAfter Operation for an Unordered List 6.5 Implementing Llsts: With Llnks The remove Operation Doubly Linked Lists The iterator Operation 6.6 Lists in the Java Collections API Cloneable Serializable RandomAccess Java.util.Vector Java.util.ArrayList Java.util.LinkedList Chapter 7 Recursion 7.1 Recurslve Thlnking Infinite Recursion Recursion in Math 7.2 Recurslve Programming Recursion versus Iteration Direct versus Indirect Recursion 7.3 Using Recutsion Traversing a Maze The Towers of Hanoi 7.4 Analyzing Recursive Algorithms Chapter 8 Sorting and Searching 8.1 Searching Static Methods Generic Methods Linear Search Binary Search Comparing Search Algorithms 8.2 Sorting Insertion Sort …… Chapter 9 Trees Chapter 10 Binary Search Trees Chapter 11 Priority Queues and Heaps Chapter 12 Multi-way Seach Trees Chapter 13 Graphs Chapter 14 Hashing Chapter 15 Sets and Maps Appendix A UML Appendix B Object-Oriented Design