,

Data Structures, Algorithms, and Software Principles in C

Paperback Engels 1996 9780201591187
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

Using C, this book develops the concepts and theory of data structures and algorithm analysis step-by-step. It gradually proceeds from concrete examples to abstract principles. The presentation stresses motivation, intuition, and utility before giving technical details. Recurring themes, such as recursion, levels of abstraction, efficiency, representation, and trade-offs, unify the material completely. Important traditional and contemporary software engineering principles are also covered, including modularity, abstract data types and information hiding, as well as new developments, such as risk-based software life cycle models and object-oriented programming.

0201591189B04062001

Specificaties

ISBN13:9780201591187
Taal:Engels
Bindwijze:Paperback

Lezersrecensies

Wees de eerste die een lezersrecensie schrijft!

Inhoudsopgave

( All chapters, except Chapter 1, begin with an Introduction and Motivation.) <br> <br> 1. Preparing for the Journey. <br> <p> </p> <div style="margin-left: 0.2in;"> Where Are We Going? </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Blending Mathematics, Science, and Engineering. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Search for Enduring Principles in Computer Science. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Principles of Software System Structure. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Efficiency and Tradeoffs. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Software Engineering Principles. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Our Approach to Mathematics. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Some Notes on Programming Notation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Preview of Coming Attractions. </div> <p></p> <br> <br> 2. Linked Data Representations. <br> <p> </p> <div style="margin-left: 0.2in;"> What are Pointers? The Basic Intuition. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Pointers in C—The Rudiments. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Pointer Diagramming Notation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Linear Linked Lists. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Other Linked Data Structures. </div> <p></p> <br> <br> 3. Introduction to Recursion. <br> <p> </p> <div style="margin-left: 0.2in;"> Thinking Recursively. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Common Pitfall—Infinite Regresses. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Quantitative Aspects of Recursive Algorithms. </div> <p></p> <br> <br> 4. Modularity and Data Abstraction. <br> <p> </p> <div style="margin-left: 0.2in;"> The Structure of C Modules. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Priority Queues—An Abstract Data Type. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> A Pocket Calculator Interface. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> How to Hide Data Representations. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Modularity and Information Hiding in Program Design. </div> <p></p> <br> <br> 5. Introduction to Software Engineering Concepts. <br> <p> </p> <div style="margin-left: 0.2in;"> Top-Down Programming By Stepwise Refinement. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Proving Programs Correct. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Transforming and Optimizing Programs. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Testing Programs. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Philosophy of Measurement and Tuning. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Software Reuse and Bottom-up Programming. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Program Structuring and Documentation. </div> <p></p> <br> <br> 6. Introduction to Analysis of Algorithms. <br> <p> </p> <div style="margin-left: 0.2in;"> What Do We Use for a Yardstick? </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Intuition Behind O-Notation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> O-Notation—Definition and Manipulation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Analyzing Simple Algorithms. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> What O-Notation Doesn’t Tell You. </div> <p></p> <br> <br> 7. Linear Data Structures—Stacks and Queues. <br> <p> </p> <div style="margin-left: 0.2in;"> Some Background on Stacks. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> ADTs for Stacks and Queues. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Using the Stack ADT to Check for Balanced Parentheses. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Using the Stack ADT to Evaluate Postfix Expressions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Implementing the Stack ADT. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> How C Implements Recursive Function Calls Using Stacks. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Implementations of the Queue ADT. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> More Queue Applications. </div> <p></p> <br> <br> 8. Lists, Strings, and Dynamic Memory Allocation. <br> <p> </p> <div style="margin-left: 0.2in;"> Lists. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Generalized Lists. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Applications of Generalized Lists. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Strings. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Dynamic Memory Allocation. </div> <p></p> <br> <br> 9. Trees. <br> <p> </p> <div style="margin-left: 0.2in;"> Basic Concepts and Terminology. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Binary Trees. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> A Sequential Binary Tree Representation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> An Application—Heaps and Priority Queues. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Traversing Binary Trees. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Binary Search Trees. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> AVL Trees and Their Performance. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Two-Three Trees. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Tries. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> An Application—Huffman Codes. </div> <p></p> <br> <br> 10. Graphs. <br> <p> </p> <div style="margin-left: 0.2in;"> Basic Concepts and Terminology. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Graph Representations. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Graph Searching. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Topological Ordering. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Shortest Paths. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Task Networks. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Useful Background on Graphs. </div> <p></p> <br> <br> 11. Hashing and the Table ADT. <br> <p> </p> <div style="margin-left: 0.2in;"> The Table ADT. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Introduction to Hashing by Simple Examples. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Collisions, Load Factors, and Clusters. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Algorithms for Hashing by Open Addressing. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Choosing a Hash Function. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Comparison of Searching Methods Using the Table ADT. </div> <p></p> <br> <br> 12. External Collections of Data. <br> <p> </p> <div style="margin-left: 0.2in;"> Characteristics of External Storage Devices. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Techniques That Don’t Work Well. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Techniques That Work Well. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Information Retrieval and Databases. </div> <p></p> <br> <br> 13. Sorting. <br> <p> </p> <div style="margin-left: 0.2in;"> Laying Some Groundwork. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Priority Queue Sorting Methods. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Divide-and-Conquer Methods. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Methods That Insert Keys and Keep Them Sorted. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> O(n) Methods—Address Calculation Sorting. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Other Methods. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Comparison and Perspective. </div> <p></p> <br> <br> 14. Advanced Recursion. <br> <p> </p> <div style="margin-left: 0.2in;"> Recursion as a Descriptive Method. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Using Recursion to Build a Parser. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Translating from Infix to Postfix. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Recursion and Program Verification. </div> <p></p> <br> <br> 15. Object-Oriented Programming. <br> <p> </p> <div style="margin-left: 0.2in;"> Exploring OOP Through Progressive Examples. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Building Systems Using Object-Oriented Programming. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Advantages and Disadvantages of Object-Oriented Programming. </div> <p></p> <br> <br> 16. Advanced Software Engineering Concepts. <br> <p> </p> <div style="margin-left: 0.2in;"> The Software Lifecycle. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Software Productivity. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Software Process Models. </div> <p></p> <br> <br> Appendix Math Reference and Tutorial. 0201591189T04062001 <br>

Managementboek Top 100

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Data Structures, Algorithms, and Software Principles in C