Data structures, algorithms, and software principles in C /

Saved in:
Bibliographic Details
Author / Creator:Standish, Thomas A., 1941-
Imprint:Reading, Mass. : Addison-Wesley, c1995.
Description:xx, 748 p. : ill. ; 24 cm.
Language:English
Subject:
Format: Print Book
URL for this record:http://pi.lib.uchicago.edu/1001/cat/bib/1712298
Hidden Bibliographic Details
ISBN:0201591189
Notes:Cover title: Data structures, algorithms & software principles in C.
Includes index.
Table of Contents:
  • 1. Preparing for the Journey
  • Where Are We Going? Blending Mathematics, Science, and Engineering
  • The Search for Enduring Principles in Computer Science
  • Principles of Software System Structure
  • Efficiency and Tradeoffs
  • Software Engineering Principles
  • Our Approach to Mathematics
  • Some Notes on Programming Notation
  • Preview of Coming Attractions
  • 2. Linked Data Representations
  • What are Pointers?
  • The Basic Intuition
  • Pointers in C--The Rudiments
  • Pointer Diagramming Notation
  • Linear Linked Lists
  • Other Linked Data Structures
  • 3. Introduction to Recursion
  • Thinking Recursively
  • Common Pitfall--Infinite Regresses
  • Quantitative Aspects of Recursive Algorithms
  • 4. Modularity and Data Abstraction
  • Modularity and Information Hiding in Program Design
  • 5. Introduction to Software Engineering Concepts
  • Top-Down Programming By Stepwise Refinement
  • Proving Programs Correct
  • Transforming and Optimizing Programs
  • Testing Programs
  • The Philosophy of Measurement and Tuning
  • Software Reuse and Bottom-up Programming
  • Program Structuring and Documentation
  • 6. Introduction to Analysis of Algorithms
  • What Do We Use for a Yardstick?
  • The Intuition Behind O-Notation
  • O-Notation--Definition and Manipulation
  • Analyzing Simple Algorithms
  • What O-Notation Doesn't Tell You
  • 7. Linear Data Structures--Stacks and Queues
  • Some Background on Stacks
  • ADTs for Stacks and Queues
  • Using the Stack ADT to Check for Balanced Parentheses
  • Using the Stack ADT to Evaluate Postfix Expressions
  • Implementing the Stack ADT
  • How C Implements Recursive Function Calls Using Stacks
  • Implementations of the Queue ADT
  • More Queue Applications
  • 8. Lists, Strings, and Dynamic Memory Allocation
  • Lists
  • Generalized Lists
  • Applications of Generalized Lists
  • Strings
  • Dynamic Memory Allocation
  • 9. Trees
  • Basic Concepts and Terminology
  • Binary Trees
  • A Sequential Binary Tree Representation
  • An Application--Heaps and Priority Queues
  • Traversing Binary Trees
  • Binary Search Trees
  • AVL Trees and Their Performance
  • Two-Three Trees
  • Tries
  • An Application--Huffman Codes
  • 10. Graphs
  • Basic Concepts and Terminology
  • Graph Representations
  • Graph Searching
  • Topological Ordering
  • Shortest Paths
  • Task Networks
  • Useful Background on Graphs
  • 11. Hashing and the Table ADT
  • The Table ADT
  • Introduction to Hashing by Simple Examples
  • Collisions, Load Factors, and Clusters
  • Algorithms for Hashing by Open Addressing
  • Choosing a Hash function
  • Comparison of Searching Methods Using the Table ADT
  • 12. External Collections of Data
  • Characteristics of External Storage Devices
  • Techniques That Don't Work Well
  • Techniques That Work Well
  • Information Retrieval and Databases
  • 13. Sorting
  • Laying Some Groundwork
  • Priority Queue Sorting Methods
  • Divide-and-Conquer Methods
  • Methods That Insert Keys and Keep Them Sorted