网上购物 货比三家
您现在的位置:快乐比价网 > 图书 > 教育/科技 > 原版书与影印版 > 商品详情

Data Abstraction & Problem Solving with C++: Walls and Mirrors

分享到:
Data Abstraction & Problem Solving with C++: Walls and Mirrors

定 价:¥0.00

作 者:Frank M. Carrano

出 版 社:

出版时间:2012年11月1日

I S B N:9780132923729

商品详情

编辑推荐

内容简介

作者简介

Frank M. Carrano is a professor emeritus of computer science at the University of Rhode Island. He received the Ph.D. degree in computer science from Syracuse University in 1969. His interests include data structures, computer science education, social issues in computing, and numerical computation. Professor Carrano is particularly interested in the design and delivery of undergraduate courses in computer science. He has authored several well-known computer science textbooks for undergraduates. Frank's Making it Real blog http://frank-m-carrano.com/blog/ extends his textbooks and lectures to a lively discussion with instructors and students about teaching and learning computer science. Follow Frank on Twitter: http://twitter.com/Frank_M_Carrano Find him on Facebook: https://www.facebook.com/makingitreal

作者简介

目录

Chapter 1 Data Abstraction: The Walls 1.1 Object-Oriented Concepts 1.1.1 Object-Oriented Analysis and Design 1.1.2 Aspects of an Object-Oriented Solution 1.2 Achieving a Better Solution 1.2.1 Cohesion 1.2.2 Coupling 1.3 Specifications 1.3.1 Operation Contracts 1.3.2 Unusual Conditions 1.3.3 Abstraction 1.3.4 Information Hiding 1.3.5 Minimal and Complete Interfaces 1.4 Abstract Data Types 1.4.1 Designing an ADT 1.4.2 ADTs that suggest other ADTs 1.5 The ADT Bag 1.5.1 Identifying Behaviors 1.5.2 Specifying Data and Operations 1.5.3 An Interface Template for the ADT 1.5.4 Using the ADT Bag C++ Interlude 1 C++ Classes C1.1 A Problem to Solve C1.1.1 Private Data Fields C1.1.2 Constructors and Destructor C1.1.3 Methods C1.1.4 Preventing Compiler Errors C1.2 Implementing a Solution C1.3 Templates C1.4 Inheritance C1.4.1 Base Classes and Derived Classes C1.4.2 Overriding Base Class Methods C1.5 Virtual Methods and Abstract Classes C1.5.1 Virtual Methods C1.5.2 Abstract Classes Chapter 2 Recursion: The Mirrors 2.1 Recursive Solutions 2.2 Recursion That Returns a Value 2.2.1 A Recursive Valued Function: The Factorial of n 2.2.2 The Box Trace 2.3 Recursion That Performs an Action 2.3.1 A Recursive void Function: Writing a String Backward 2.4 Recursion with Arrays 2.4.1 Writing an Array's Entries in Backward Order 2.4.2 The Binary Search 2.4.3 Finding the Largest Value in an Array 2.4.4 Finding the kth Smallest Value of an Array 2.5 Organizing Data 2.5.1The Towers of Hanoi 2.6 More Examples 2.6.1 The Fibonacci Sequence (Multiplying Rabbits) 2.6.2 Organizing a Parade 2.6.3 Choosing k Out of n Things 2.7 Recursion and Efficiency Chapter 3 Array-Based Implementations 3.1 The Approach 3.1.1 Core Methods 3.1.2 Using Fixed-Size Arrays 3.2 An Array-Based Implementation of the ADT Bag 3.2.1 The Header File 3.2.2 Defining the Core Methods 3.2.3 Testing the Core Methods 3.2.4 Implementing More Methods 3.2.5 Methods That Remove Entries 3.2.6 Testing 3.3 Using Recursion in the Implementation C++ Interlude 2 Pointers, Polymorphism, and Memory Allocation C2.1 Memory Allocation for Variables and Early Binding of Methods C2.2 A Problem to Solve C2.3 Pointers and the Program Free Store C2.3.1 Deallocating Memory C2.3.2 Avoiding Memory Leaks C2.3.3 Avoiding Dangling Pointers C2.4 Virtual Methods and Polymorphism C2.5 Dynamic Allocation of Arrays C2.5.1 A Resizable Array-Based Bag Chapter 4 Link-Based Implementations 4.1 Preliminaries 4.1.1 The Class Node 4.2 A Link-Based Implementation of the ADT Bag 4.2.1 The Header File 4.2.2 Defining the Core Methods 4.2.3 Implementing More Methods 4.3 Using Recursion in Link-Based Implementations 4.3.1 Recursive Definitions of Methods in LinkedBag 4.4 Comparing Array-Based and Link-Based Implementations Chapter 5 Recursion as a Problem-Solving Technique 5.1 Defining Languages 5.1.1 The Basics of Grammars 5.1.2 Two Simple Languages 5.3 Algebraic Expressions 5.2.1 Kinds of Algebraic Expressions 5.2.2 Prefix Expressions 5.2.3 Postfix Expressions 5.2.4 Fully Parenthesized Expressions 5.3 Backtracking 5.3.1 Searching for an Airline Route 5.3.2 The Eight Queens Problem 5.4 The Relationship Between Recursion and Mathematical Induction 5.4.1 The Correctness of the Recursive Factorial Function 5.4.2 The Cost of Towers of Hanoi Chapter 6 Stacks 6.1 The Abstract Data Type Stack 6.1.1 Developing an ADT During the Design of a Solution 6.1.2 Specifications for the ADT Stack 6.2 Simple Uses of a Stack 6.2.1 Checking for Balanced Braces 6.2.2 Recognizing Strings in a Language 6.3 Using Stacks with Algebraic Expressions 6.3.1 Evaluating Postfix Expressions 6.3.2 Converting Infix Expressions to Equivalent Postfix Expressions 6.4 Using a Stack to Search a Flight Map 6.5 The Relationship Between Stacks and Recursion C++ Interlude 3 Exceptions C3.1 Background C3.1.1 A Problem to Solve C3.2 Assertions C3.3 Throwing Exceptions C3.4 Handling Exceptions C3.1.1 Multiple catch Blocks C3.1.2 Uncaught Exceptions C3.5 Programmer-Defined Exception Classes Chapter 7 Stack Implementations 7.1 An Array-Based Implementation 7.2 A Linked Implementation 7.3 Comparing Implementations Chapter 8 Lists 8.1 Specifying the Abstract Data Type List 8.2 Using the List Operations 8.3 Specifications of the ADT List Using Exceptions Chapter 9 List Implementations 9.1 An Array-Based Implementation of the ADT List 9.1.1 The Header File 9.1.2 The Implementation File 9.2 A Linked Implementation of the ADT List 9.2.1 The Header File 9.2.2 The Implementation File 9.2.3 Using Recursion To Process a Linked Chain 9.3 Comparing Implementations Chapter 10 Algorithm Efficiency 10.1 What Is a Good Solution? 10.2 Measuring the Efficiency of Algorithms 10.2.1 The Execution Time of Algorithms 10.2.2 Algorithm Growth Rates 10.2.3 Order-of-Magnitude Analysis and Big O Notation 10.2.4 Keeping Your Perspective 10.2.5 The Efficiency of Searching Algorithms Chapter 11 Sorting Algorithms and Their Efficiency 11.1 Basic Sorting Algorithms 11.1.1 Selection Sort 11.1.2 Bubble Sort 11.1.3 Insertion Sort 11.2 Faster Sorting Algorithms 11.2.1 Merge Sort 11.2.2 Quick Sort 11.2.3 Radix Sort 11.3 A Comparison of Sorting Algorithms 11.4 The Standard Template Library: Sorting Algorithms C++ Interlude 4 Class Relationships and Reuse C4.1 Inheritance Revisited C4.1.1 Public, Private, and Protected Sections of a Class C4.1.2 Public, Private, and Protected Inheritance C4.1.3 Is-a and As-a Relationships C4.2 Containment: Has-a Relationships C4.3 Abstract Base Classes Revisited Chapter 12 Sorted Lists and Their Implementations 12.1 Specifying the ADT Sorted List 12.1.1 An Interface Template for the ADT Sorted List 12.1.2 Using the Sorted List Operations 12.2 A Link-Based Implementation 12.2.1 The Header File 12.2.3 The Implementation File 12.2.3 The Efficiency of the Link-Based Implementation 12.3 Implementations That Use the ADT List 12.3.1 Composition 12.3.2 Public Inheritance 12.3.3 Private Inheritance Chapter 13 Queues and Priority Queues 13.1 The ADT Queue 13.2 Simple Applications of a Queue 13.2.1 Reading a String of Characters 13.2.2 Recognizing Palindromes 13.3 The ADT Priority Queue 13.4.1 Tracking Your Assignments 13.4 Application: Simulation 13.5 Position-Oriented and Value-Oriented ADTs Chapter 14 Queue Implementations 14.1 Implementations of the ADT Queue 14.1.1 An Implementation That Uses the ADT List 14.1.2 A Link-Based Implementation 14.1.3 An Array-Based Implementation 14.1.4 Comparing Implementations 14.2 An Implementation of the ADT Priority Queue C++ Interlude 5 Overloaded Operators and Friend Classes Overloading Operators Overloading the Stream Operators " and " Friend Classes and Data Member Access Chapter 15 Trees 15.1 Terminology 15.1.1 Kinds of Trees 15.1.2 The Height of Trees 15.1.3 Full, Complete, and Balanced Binary Trees 15.1.4 The Maximum and Minimum Heights of a Binary Tree 15.2 The ADT Binary Tree 15.2.1 Binary Tree Operations 15.2.2 An Interface Template for the ADT Binary Tree 15.2.3 Traversals of a Binary Tree 15.3 The ADT Binary Search Tree 15.3.1 Binary Search Tree Operations 15.3.2 An Interface Template for the ADT Binary Tree 15.3.3 Searching a Binary Search Tree 15.3.4 Creating a Binary Search Tree 15.3.5 Traversals of a Binary Search Tree Chapter 16 Tree Implementations 16.1 Implementations of the ADT Binary Tree 16.1.1 A Link-Based Implementation 16.1.2 An Array-Based Implementation 16.1.3 Efficiency of Implementations 16.2 An Implementation of the ADT Binary Search Tree 16.2.1 Algorithms for Insertion, Deletion, and Traversal 16.2.2 A Link-Based Implementation 16.2.3 Efficiency of the Implementation 16.2.4 Saving a Binary Search Tree in a File C++ Interlude 6 Iterators Iterator Introduction A List Iterator and Its Use A BST Tree Iterator and Its Use Chapter 17 Heaps An Array-Based Implementation A Heap as a Priority Queue The Heap Sort Chapter 18 Dictionaries and Their Implementations Dictionaries and Key-Value Pairs Linear (Array and Linked) and Hierarchical (Tree) Implementations Hash Functions Resolving Collisions A Hashing Implementation The Efficiency of Hashing Chapter 19 Balanced Search Trees AVL Trees 2-3 Trees 2-3-4 Trees Red-Black Trees Chapter 20 Graphs 20.1 Terminology 20.2 Graphs as ADTs 20.2.1 Implementing Graphs 20.3 Graph Traversals 20.3.1 Depth-First Search 20.3.2 Breadth-First Search 20.4 Applications of Graphs 20.4.1 Topological Sorting 20.4.2 Spanning Trees 20.4.3 Minimum Spanning Trees 20.4.4 Shortest Paths 20.4.5 Circuits 20.4.6 Some Difficult Problems Chapter 21 Processing Data in External Storage 21.1 A Look at External Storage 21.2 A Sorting Data in an External File 21.3 External Searches 21.3.1 Indexing an External File 21.3.2 External Hashing 21.3.3 B-Trees 21.3.4 Traversals 21.3.5 Multiple Indexing C++ Interlude 7 The Standard Template Library Introduction to Templates and the STL Generalizing the ADT Node and List Appendix A Review of C++ Fundamentals Appendix B Important Themes in Programming (currently Section 1.3) Appendix C The Unified Modeling Language (currently in section 1.1) Appendix D The Software Life Cycle (currently section 1.1) Appendix E Mathematical Induction (currently Appendix D) Appendix F Algorithm Verification (currently in section 1.2) Appendix G Files Appendix H C++ Header Files and Standard Functions (currently Appendix C) Appendix I C++ Standard Template Library (currently Appendix E) Appendix J C++ Documentation Systems (currently Appendix F) Appendix K ASCII Character Codes (currently Appendix B) Appendix L A Comparison of C++ and Java Appendix M A Comparison of C++ and Python

商品评论(0条)

暂无评论!

您的浏览历史

loading 内容加载中,请稍后...