出版時(shí)間:2009-9 出版社:清華大學(xué)出版社 作者:(美)劉易斯,(美)切斯 著 頁(yè)數(shù):526
前言
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, weve 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. Weve 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.
內(nèi)容概要
本書(shū)是著名作者John Lewis與William Loftus作為其一流的CS1教材“Java Software Solutions:Foundations of Program Design”的姊妹篇。盡管本書(shū)的英文名為“Java Software Structures: Designing and Using Data Structures”,但正如作者在前言中所說(shuō)的那樣,本書(shū)其實(shí)是一本可作為“數(shù)據(jù)結(jié)構(gòu)與算法”課程的教材。根據(jù)使用了前兩版的教師和學(xué)生的反饋,作者在第3版中進(jìn)行了重大修改,以適應(yīng)教學(xué)的需要?! ”緯?shū)關(guān)注的是數(shù)據(jù)結(jié)構(gòu)和算法背后的核心設(shè)計(jì)問(wèn)題。在展現(xiàn)每種集合時(shí),本書(shū)都是先探討該集合的一般概念,接著再討論該集合在問(wèn)題求解中的用法,最后討論了各種候選實(shí)現(xiàn)方案。因此,本書(shū)是“數(shù)據(jù)結(jié)構(gòu)與算法”Java語(yǔ)言描述課程的理想教材。
書(shū)籍目錄
ContentsPreface Chapter 1 Introduction 1.1 Soffware 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 Algorithms 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 Java Collections 3.2 A Stack Collection 3.3 CruciaI OO Concepts Inheritance Class Hierarchies The Object Class Polymorphism References and Class Hierarchies Generics 3.4 A Stack ADT Interfaces 3.5 Using Stacks:Evaluating Postfix Expressions 3.6 Exceptions Exception Messages The try Statement Exception Propagation 3.7 Implementing a Stack:With Arrays Managing Capacity 3.8 The ArrayStack Class The Constructors The push operation The pop operation The peek operation 0ther OperationsChapter 4 Linked Structures 4.1 References as Links 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:With Links The LinkedStack Class ……Chapter 5 Queues Chapter 6 Lists Chapter 7 RecursionChapter 8 Sorting and Searching Chapter 9 TheesChapter 10 Binary Search Thees Chapter 11 Priority Queues and HeapsChapter 12 Multi-way Search TreesChapter 13 GraphsChapter 14 Hashing Chapter 15 Sets adn MapsAppendix A UMLAppendix B Object-Oriented Design
章節(jié)摘錄
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, lets 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 values and operations arenot inherently defined within a programming language. It is abstract only in thatthe details of its implementation must be defined and should be hidden from theuser. A collection, therefore, is an abstract data type.
圖書(shū)封面
評(píng)論、評(píng)分、閱讀與下載
Java軟件結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu) PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版