Book description
There are many books on data structures and algorithms, including some with useful libraries of C functions. Mastering Algorithms with C offers you a unique combination of theoretical background and working code. With robust solutions for everyday programming tasks, this book avoids the abstract style of most classic data structures and algorithms texts, but still provides all of the information you need to understand the purpose and use of common programming techniques.
Implementations, as well as interesting, real-world examples of each data structure and algorithm, are included.
Using both a programming style and a writing style that are exceptionally clean, Kyle Loudon shows you how to use such essential data structures as lists, stacks, queues, sets, trees, heaps, priority queues, and graphs. He explains how to use algorithms for sorting, searching, numerical analysis, data compression, data encryption, common graph problems, and computational geometry. And he describes the relative efficiency of all implementations. The compression and encryption chapters not only give you working code for reasonably efficient solutions, they offer explanations of concepts in an approachable manner for people who never have had the time or expertise to study them in depth.
Anyone with a basic understanding of the C language can use this book. In order to provide maintainable and extendible code, an extra level of abstraction (such as pointers to functions) is used in examples where appropriate. Understanding that these techniques may be unfamiliar to some programmers, Loudon explains them clearly in the introductory chapters.
Contents include:
- Pointers
- Recursion
- Analysis of algorithms
- Data structures (lists, stacks, queues, sets, hash tables, trees, heaps, priority queues, graphs)
- Sorting and searching
- Numerical methods
- Data compression
- Data encryption
- Graph algorithms
- Geometric algorithms
Publisher resources
Table of contents
- A Note Regarding Supplemental Files
- Preface
-
I. Preliminaries
- 1. Introduction
- 2. Pointer Manipulation
- 3. Recursion
- 4. Analysis of Algorithms
-
II. Data Structures
-
5. Linked Lists
- 5.1. Description of Linked Lists
- 5.2. Interface for Linked Lists
- 5.3. Implementation and Analysis of Linked Lists
- 5.4. Linked List Example: Frame Management
- 5.5. Description of Doubly-Linked Lists
- 5.6. Interface for Doubly-Linked Lists
- 5.7. Implementation and Analysis of Doubly Linked Lists
- 5.8. Description of Circular Lists
- 5.9. Interface for Circular Lists
- 5.10. Implementation and Analysis of Circular Lists
- 5.11. Circular List Example: Second-Chance Page Replacement
- 5.12. Questions and Answers
- 5.13. Related Topics
- 6. Stacks and Queues
- 7. Sets
-
8. Hash Tables
- 8.1. Description of Chained Hash Tables
- 8.2. Interface for Chained Hash Tables
- 8.3. Implementation and Analysis of Chained Hash Tables
- 8.4. Chained Hash Table Example: Symbol Tables
- 8.5. Description of Open-Addressed Hash Tables
- 8.6. Interface for Open-Addressed Hash Tables
- 8.7. Implementation and Analysisof Open Addressed Hash Tables
- 8.8. Questions and Answers
- 8.9. Related Topics
-
9. Trees
- 9.1. Description of Binary Trees
- 9.2. Interface for Binary Trees
- 9.3. Implementation and Analysis of Binary Trees
- 9.4. Binary Tree Example: Expression Processing
- 9.5. Description of Binary Search Trees
- 9.6. Interface for Binary Search Trees
- 9.7. Implementation and Analysis of Binary Search Trees
- 9.8. Questions and Answers
- 9.9. Related Topics
-
10. Heaps and Priority Queues
- 10.1. Description of Heaps
- 10.2. Interface for Heaps
- 10.3. Implementation and Analysis of Heaps
- 10.4. Description of Priority Queues
- 10.5. Interface for Priority Queues
- 10.6. Implementation and Analysis of Priority Queues
- 10.7. Priority Queue Example: Parcel Sorting
- 10.8. Questions and Answers
- 10.9. Related Topics
- 11. Graphs
-
5. Linked Lists
-
III. Algorithms
-
12. Sorting and Searching
- 12.1. Description of Insertion Sort
- 12.2. Interface for Insertion Sort
- 12.3. Implementation and Analysis of Insertion Sort
- 12.4. Description of Quicksort
- 12.5. Interface for Quicksort
- 12.6. Implementation and Analysis of Quicksort
- 12.7. Quicksort Example: Directory Listings
- 12.8. Description of Merge Sort
- 12.9. Interface for Merge Sort
- 12.10. Implementation and Analysis of Merge Sort
- 12.11. Description of Counting Sort
- 12.12. Interface for Counting Sort
- 12.13. Implementation and Analysis of Counting Sort
- 12.14. Description of Radix Sort
- 12.15. Interface for Radix Sort
- 12.16. Implementation and Analysis of Radix Sort
- 12.17. Description of Binary Search
- 12.18. Interface for Binary Search
- 12.19. Implementation and Analysis of Binary Search
- 12.20. Binary Search Example: Spell Checking
- 12.21. Questions and Answers
- 12.22. Related Topics
-
13. Numerical Methods
- 13.1. Description of Polynomial Interpolation
- 13.2. Interface for Polynomial Interpolation
- 13.3. Implementation and Analysis of Polynomial Interpolation
- 13.4. Description of Least-Squares Estimation
- 13.5. Interface for Least-Squares Estimation
- 13.6. Implementation and Analysis of Least-Squares Estimation
- 13.7. Description of the Solution of Equations
- 13.8. Interface for the Solution of Equations
- 13.9. Implementation and Analysis of the Solution of Equations
- 13.10. Questions and Answers
- 13.11. Related Topics
-
14. Data Compression
- 14.1. Description of Bit Operations
- 14.2. Interface for Bit Operations
- 14.3. Implementation and Analysis of Bit Operations
- 14.4. Description of Huffman Coding
- 14.5. Interface for Huffman Coding
- 14.6. Implementation and Analysis of Huffman Coding
- 14.7. Huffman Coding Example: Optimized Networking
- 14.8. Description of LZ77
- 14.9. Interface for LZ77
- 14.10. Implementation and Analysis of LZ77
- 14.11. Questions and Answers
- 14.12. Related Topics
- 15. Data Encryption
-
16. Graph Algorithms
- 16.1. Description of Minimum Spanning Trees
- 16.2. Interface for Minimum Spanning Trees
- 16.3. Implementation and Analysis of Minimum Spanning Trees
- 16.4. Description of Shortest Paths
- 16.5. Interface for Shortest Paths
- 16.6. Implementation and Analysis of Shortest Paths
- 16.7. Shortest Paths Example: Routing Tables
- 16.8. Description of the Traveling-Salesman Problem
- 16.9. Interface for the Traveling-Salesman Problem
- 16.10. Implementation and Analysis of the Traveling-Salesman Problem
- 16.11. Questions and Answers
- 16.12. Related Topics
-
17. Geometric Algorithms
- 17.1. Description of Testing Whether Line Segments Intersect
- 17.2. Interface for Testing Whether Line Segments Intersect
- 17.3. Implementation and Analysis of Testing Whether Line Segments Intersect
- 17.4. Description of Convex Hulls
- 17.5. Interface for Convex Hulls
- 17.6. Implementation and Analysis of Convex Hulls
- 17.7. Description of Arc Length on Spherical Surfaces
- 17.8. Interface for Arc Length on Spherical Surfaces
- 17.9. Implementation and Analysis of Arc Length on Spherical Surfaces
- 17.10. Arc Length Example: Approximating Distances on Earth
- 17.11. Questions and Answers
- 17.12. Related Topics
-
12. Sorting and Searching
- Index
- About the Author
- Colophon
- Copyright
Product information
- Title: Mastering Algorithms with C
- Author(s):
- Release date: August 1999
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781565924536
You might also like
book
Introducing Algorithms in C: A Step by Step Guide to Algorithms in C
Study elementary and complex algorithms with clear examples and implementations in C. This book introduces data …
book
Data Structures Using C
Data Structures Using C brings together a first course on data structures and the complete programming …
book
Data Structure Using C
A data structure is the logical organization of a set of data items that collectively describe …
book
Head First C
Ever wished you could learn C from a book? Head First C provides a complete learning …