Java软件结构与数据结构(第3版)(大学计算机教育国外著名教材系列)(Java Sofrtware Structures Designing and Using Structures Third Edition)

分類: 图书,教材教辅与参考书,大学,计算机专业,
品牌: John Lewis
基本信息·出版社:清华大学出版社
·页码:526 页
·出版日期:2009年09月
·ISBN:9787302207306
·条形码:9787302207306
·包装版本:第1版
·装帧:平装
·开本:16
·正文语种:英语
·丛书名:大学计算机教育国外著名教材系列
·外文书名:Java Sofrtware Structures Designing and Using Structures Third Edition
产品信息有问题吗?请帮我们更新产品信息。
内容简介《Java软件结构与数据结构(第3版)》是著名作者John Lewis与William Loftus作为其一流的CS1教材“Java Software Solutions:Foundations of Program Design”的姊妹篇。尽管《Java软件结构与数据结构(第3版)》的英文名为“Java Software Structures: Designing and Using Data Structures”,但正如作者在前言中所说的那样,《Java软件结构与数据结构(第3版)》其实是一本可作为“数据结构与算法”课程的教材。根据使用了前两版的教师和学生的反馈,作者在第3版中进行了重大修改,以适应教学的需要。
《Java软件结构与数据结构(第3版)》关注的是数据结构和算法背后的核心设计问题。在展现每种集合时,《Java软件结构与数据结构(第3版)》都是先探讨该集合的一般概念,接着再讨论该集合在问题求解中的用法,最后讨论了各种候选实现方案。因此,《Java软件结构与数据结构(第3版)》是“数据结构与算法”Java语言描述课程的理想教材。
编辑推荐《Java软件结构与数据结构(第3版)》:大学计算机教育国外著名教材系列。
目录
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
……[看更多目录]
序言This book is designed to serve as a text for a course on data structures and algo-rithms. This course is typically referred to as the CS2 course because it is oftentaken as the second course in a computing curriculum. We have designed thisbook to embrace the tenets of Computing Curricula 2001 (CC2001).
Pedagogically, this book follows the style and approach of the leading CS1book Java Software Solutions: Foundations of Program Design, by John Lewisand William Loftus. Our book uses many of the highly regarded features of thatbook, such as the Key Concept boxes and complete code examples. Together,these two books support a solid and consistent approach to either a two-courseor three-course introductory sequence for computing students. That said, thisbook does' not assume that students have used Java Sofware Solutions in a previ-ous course.
Material that might be presented in either course (such as recursion or sorting)is presented in this book as well. We also include strong reference material pro-viding an overview of object-oriented concepts and how they are realized in Java.
We understand the crucial role that the data structures and algorithms courseplays in a curriculum and we think this book serves the needs of that course well.The Third EditionWe have made some key modifications in this third edition to enhance its peda-gogy. The most important-change is a fundamental reorganization of material thatis designed to create a cleaner flow of topics. Instead of having an early, largechapter to review obiect-oriented concepts, we've included that material as anappendix for reference. Then we review concepts as needed and appropriate in thecontext of the implementation strategies discussed throughout the book and citethe appropriate reference material. This not only links the topics in a timely fash-ion but also demonstrates the usefulness of particular language constructs.
We've expanded the discussion of Analysis of Algorithms, and given it its ownchapter. The discussion, however, stays at an appropriately moderate level. Ourstrategy is to motivate the concepts involved in the analysis of algorithms, layinga solid foundation, rather than get embroiled in too much formality.
文摘插图:

Abstraction is another important software engineering concept. In large soft-ware systems, it is virtually impossible for any one person to grasp all of the de-tails of the system at once. Instead, the system is divided into abstract subsystemssuch that the purpose of and the interactions among those subsystems can bespecified. Subsystems may then be assigned to different developers or groups ofdevelopers that will develop the subsystem to meet its specification.
An object is the perfect mechanism for creating a collection because, if it is de-signed correctly, the internal workings of an object are encapsulated from the restof the system. In almost all cases, the instance variables defined in a class shouldbe declared with private visibility. Therefore, only the methods of that class canaccess and modify them. The only interaction a user has with an object should bethrough its public methods, which represent the services that the object provides. As we progress through our exploration of collections, we will always stressthe idea of separating the interface from the implementation. Therefore, for everycollection that we examine, we should consider the following:
How does the collection operate, conceptually?
How do we formally define the interface to the collection?
What kinds of problems does the collection help us solve?
In which various ways might we implement the collection?
What are the benefits and costs of each implementation?
Before we continue, let's carefully define some other terms related to the explo-ration of collections. A data type is a group of values and the operations definedon those values. The primitive data types defined in Java are the primary exam-pies. For example, the integer data type defines a set of numeric values and theoperations (addition, subtraction, etc.) that can be used on them. An abstract data type (ADT) is a data type whose value
……[看更多书摘]