Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Mastering Algorithms with C
A Note Regarding Supplemental Files Preface
Organization
Part I Part II Part III
Key Features About the Code Conventions How to Contact Us Acknowledgments
I. Preliminaries
1. Introduction
1.1. An Introduction to Data Structures 1.2. An Introduction to Algorithms
1.2.1. General Approaches in Algorithm Design
1.2.1.1. Randomized algorithms 1.2.1.2. Divide-and-conquer algorithms 1.2.1.3. Dynamic-programming solutions 1.2.1.4. Greedy algorithms 1.2.1.5. Approximation algorithms
1.3. A Bit About Software Engineering 1.4. How to Use This Book
2. Pointer Manipulation
2.1. Pointer Fundamentals 2.2. Storage Allocation 2.3. Aggregates and Pointer Arithmetic
2.3.1. Structures 2.3.2. Arrays
2.4. Pointers as Parameters to Functions
2.4.1. Call-by-Reference Parameter Passing 2.4.2. Pointers to Pointers as Parameters
2.5. Generic Pointers and Casts
2.5.1. Generic Pointers 2.5.2. Casts
2.6. Function Pointers 2.7. Questions and Answers 2.8. Related Topics
3. Recursion
3.1. Basic Recursion 3.2. Tail Recursion 3.3. Questions and Answers 3.4. Related Topics
4. Analysis of Algorithms
4.1. Worst-Case Analysis
4.1.1. Reasons for Worst-Case Analysis
4.2. O-Notation
4.2.1. Simple Rules for O-Notation 4.2.2. O-Notation Example and Why It Works
4.3. Computational Complexity 4.4. Analysis Example: Insertion Sort 4.5. Questions and Answers 4.6. Related Topics
II. Data Structures
5. Linked Lists
5.1. Description of Linked Lists 5.2. Interface for Linked Lists
list_init list_destroy list_ins_next list_rem_next list_size list_head list_tail list_is_head list_is_tail list_data list_next
5.3. Implementation and Analysis of Linked Lists
5.3.1. list_init 5.3.2. list_destroy 5.3.3. list_ins_next 5.3.4. list_rem_next 5.3.5. list_size, list_head, list_tail, list_is_tail,list_data, and list_next
5.4. Linked List Example: Frame Management 5.5. Description of Doubly-Linked Lists 5.6. Interface for Doubly-Linked Lists
dlist_init dlist_destroy dlist_ins_next dlist_ins_prev dlist_remove dlist_size dlist_head dlist_tail dlist_is_head dlist_is_tail dlist_data dlist_next dlist_prev
5.7. Implementation and Analysis of Doubly Linked Lists
5.7.1. dlist_init 5.7.2. dlist_destroy 5.7.3. dlist_ins_next 5.7.4. dlist_ins_ prev 5.7.5. dlist_remove 5.7.6. dlist_size, dlist_head, dlist_tail, dlist_is_head, dlist_is_tail, dlist_data, dlist_next, and dlist_ prev
5.8. Description of Circular Lists 5.9. Interface for Circular Lists
clist_init clist_destroy clist_ins_next clist_rem_next clist_size clist_head clist_data clist_next
5.10. Implementation and Analysis of Circular Lists
5.10.1. clist_init 5.10.2. clist_destroy 5.10.3. clist_ins_next 5.10.4. clist_rem_next 5.10.5. clist_size, clist_head, clist_data, and clist_next
5.11. Circular List Example: Second-Chance Page Replacement 5.12. Questions and Answers 5.13. Related Topics
6. Stacks and Queues
6.1. Description of Stacks 6.2. Interface for Stacks
stack_init stack_destroy stack_ push stack_ pop stack_ peek stack_size
6.3. Implementation and Analysis of Stacks
6.3.1. stack_init 6.3.2. stack_destroy 6.3.3. stack_ push 6.3.4. stack_ pop 6.3.5. stack_ peek, stack_size
6.4. Description of Queues 6.5. Interface for Queues
queue_init queue_destroy queue_enqueue queue_dequeue queue_ peek queue_size
6.6. Implementation and Analysis of Queues
6.6.1. queue_init 6.6.2. queue_destroy 6.6.3. queue_enqueue 6.6.4. queue_dequeue 6.6.5. queue_ peek, queue_size
6.7. Queue Example: Event Handling 6.8. Questions and Answers 6.9. Related Topics
7. Sets
7.1. Description of Sets
7.1.1. Definitions 7.1.2. Basic Operations 7.1.3. Properties
7.2. Interface for Sets
set_init set_destroy set_insert set_remove set_union set_intersection set_difference set_is_member set_is_subset set_is_equal set_size
7.3. Implementation and Analysis of Sets
7.3.1. set_init 7.3.2. set_destroy 7.3.3. set_insert 7.3.4. set_remove 7.3.5. set_union 7.3.6. set_intersection 7.3.7. set_difference 7.3.8. set_is_member 7.3.9. set_is_subset 7.3.10. set_is_equal 7.3.11. set_size
7.4. Set Example: Set Covering 7.5. Questions and Answers 7.6. Related Topics
8. Hash Tables
8.1. Description of Chained Hash Tables
8.1.1. Collision Resolution 8.1.2. Selecting a Hash Function
8.1.2.1. Division method 8.1.2.2. Multiplication method
8.2. Interface for Chained Hash Tables
chtbl_init chtbl_destroy chtbl_insert chtbl_remove chtbl_lookup chtbl_size
8.3. Implementation and Analysis of Chained Hash Tables
8.3.1. chtbl_init 8.3.2. chtbl_destroy 8.3.3. chtbl_insert 8.3.4. chtbl_remove 8.3.5. chtbl_lookup 8.3.6. chtbl_size
8.4. Chained Hash Table Example: Symbol Tables 8.5. Description of Open-Addressed Hash Tables
8.5.1. Collision Resolution
8.5.1.1. Linear probing 8.5.1.2. Double hashing
8.6. Interface for Open-Addressed Hash Tables
ohtbl_init ohtbl_destroy ohtbl_insert ohtbl_remove ohtbl_lookup ohtbl_size
8.7. Implementation and Analysisof Open Addressed Hash Tables
8.7.1. ohtbl_init 8.7.2. ohtbl_destroy 8.7.3. ohtbl_insert 8.7.4. ohtbl_remove 8.7.5. ohtbl_lookup 8.7.6. ohtbl_size
8.8. Questions and Answers 8.9. Related Topics
9. Trees
9.1. Description of Binary Trees
9.1.1. Traversal Methods
9.1.1.1. Preorder traversal 9.1.1.2. Inorder traversal 9.1.1.3. Postorder traversal 9.1.1.4. Level-order traversal
9.1.2. Tree Balancing
9.2. Interface for Binary Trees
bitree_init bitree_destroy bitree_ins_left bitree_ins_right bitree_rem_left bitree_rem_right bitree_merge bitree_size bitree_root bitree_is_eob bitree_is_leaf bitree_data bitree_left bitree_right
9.3. Implementation and Analysis of Binary Trees
9.3.1. bitree_init 9.3.2. bitree_destroy 9.3.3. bitree_ins_left 9.3.4. bitree_ins_right 9.3.5. bitree_rem_left 9.3.6. bitree_rem_right 9.3.7. bitree_merge 9.3.8. bitree_size, bitree_root, bitree_is_eob, bitree_is_leaf, bitree_data, bitree_left, bitree_right
9.4. Binary Tree Example: Expression Processing 9.5. Description of Binary Search Trees 9.6. Interface for Binary Search Trees
bistree_init bistree_destroy bistree_insert bistree_remove bistree_lookup bistree_size
9.7. Implementation and Analysis of Binary Search Trees
9.7.1. Rotations in AVL Trees
9.7.1.1. LL rotation 9.7.1.2. LR rotation 9.7.1.3. RR rotation 9.7.1.4. RL rotation
9.7.2. bistree_init 9.7.3. bistree_destroy 9.7.4. bistree_insert 9.7.5. bistree_remove 9.7.6. bistree_lookup 9.7.7. bistree_size
9.8. Questions and Answers 9.9. Related Topics
10. Heaps and Priority Queues
10.1. Description of Heaps 10.2. Interface for Heaps
heap_init heap_destroy heap_insert heap_extract heap_size
10.3. Implementation and Analysis of Heaps
10.3.1. heap_init 10.3.2. heap_destroy 10.3.3. heap_insert 10.3.4. heap_extract 10.3.5. heap_size
10.4. Description of Priority Queues 10.5. Interface for Priority Queues
pqueue_init pqueue_destroy pqueue_insert pqueue_extract pqueue_ peek pqueue_size
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
11.1. Description of Graphs
11.1.1. Search Methods
11.1.1.1. Breadth-first search 11.1.1.2. Depth-first search
11.2. Interface for Graphs
graph_init graph_destroy graph_ins_vertex graph_ins_edge graph_rem_vertex graph_rem_edge graph_adjlist graph_is_adjacent graph_adjlists graph_vcount graph_ecount
11.3. Implementation and Analysis of Graphs
11.3.1. graph_init 11.3.2. graph_destroy 11.3.3. graph_ins_vertex 11.3.4. graph_ins_edge 11.3.5. graph_rem_vertex 11.3.6. graph_rem_edge 11.3.7. graph_adjlist 11.3.8. graph_is_adjacent 11.3.9. graph_adjlists, graph_vcount, graph_ecount
11.4. Graph Example: Counting Network Hops 11.5. Graph Example: Topological Sorting 11.6. Questions and Answers 11.7. Related Topics
III. Algorithms
12. Sorting and Searching
12.1. Description of Insertion Sort 12.2. Interface for Insertion Sort
issort
12.3. Implementation and Analysis of Insertion Sort 12.4. Description of Quicksort 12.5. Interface for Quicksort
qksort
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
mgsort
12.10. Implementation and Analysis of Merge Sort 12.11. Description of Counting Sort 12.12. Interface for Counting Sort
ctsort
12.13. Implementation and Analysis of Counting Sort 12.14. Description of Radix Sort 12.15. Interface for Radix Sort
rxsort
12.16. Implementation and Analysis of Radix Sort 12.17. Description of Binary Search 12.18. Interface for Binary Search
bisearch
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.1.1. Constructing an Interpolating Polynomial 13.1.2. Evaluating an Interpolating Polynomial
13.2. Interface for Polynomial Interpolation
interpol
13.3. Implementation and Analysis of Polynomial Interpolation 13.4. Description of Least-Squares Estimation 13.5. Interface for Least-Squares Estimation
lsqe
13.6. Implementation and Analysis of Least-Squares Estimation 13.7. Description of the Solution of Equations
13.7.1. Finding Roots with Newton's Method 13.7.2. Computing the Derivative of a Polynomial 13.7.3. Understanding the First and Second Derivative 13.7.4. Selecting an Initial Point for Newton's Method 13.7.5. How Newton's Method Works
13.8. Interface for the Solution of Equations
root
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
bit_ get bit_set bit_xor bit_rot_left
14.3. Implementation and Analysis of Bit Operations
14.3.1. bit_ get 14.3.2. bit_set 14.3.3. bit_xor 14.3.4. bit_rot_left
14.4. Description of Huffman Coding
14.4.1. Entropy and Minimum Redundancy 14.4.2. Building a Huffman Tree 14.4.3. Compressing and Uncompressing Data 14.4.4. Effectiveness of Huffman Coding
14.5. Interface for Huffman Coding
huffman_compress huffman_uncompress
14.6. Implementation and Analysis of Huffman Coding
14.6.1. huffman_compress 14.6.2. huffman_uncompress
14.7. Huffman Coding Example: Optimized Networking 14.8. Description of LZ77
14.8.1. Maintaining a Dictionary of Phrases 14.8.2. Compressing and Uncompressing Data 14.8.3. Effectiveness of LZ77
14.9. Interface for LZ77
lz77_compress lz77_uncompress
14.10. Implementation and Analysis of LZ77
14.10.1. lz77_compress 14.10.2. lz77_uncompress
14.11. Questions and Answers 14.12. Related Topics
15. Data Encryption
15.1. Description of DES
15.1.1. Computing Subkeys 15.1.2. Enciphering and Deciphering Data Blocks
15.2. Interface for DES
des_encipher des_decipher
15.3. Implementation and Analysis of DES
15.3.1. des_encipher 15.3.2. des_decipher
15.4. DES Example: Block Cipher Modes 15.5. Description of RSA
15.5.1. Computing Public and Private Keys 15.5.2. Enciphering and Deciphering Data Blocks
15.6. Interface for RSA
rsa_encipher rsa_decipher
15.7. Implementation and Analysis of RSA
15.7.1. rsa_encipher 15.7.2. rsa_decipher
15.8. Questions and Answers 15.9. Related Topics
16. Graph Algorithms
16.1. Description of Minimum Spanning Trees
16.1.1. Prim's Algorithm
16.2. Interface for Minimum Spanning Trees
mst
16.3. Implementation and Analysis of Minimum Spanning Trees 16.4. Description of Shortest Paths
16.4.1. Dijkstra's Algorithm
16.5. Interface for Shortest Paths
shortest
16.6. Implementation and Analysis of Shortest Paths 16.7. Shortest Paths Example: Routing Tables 16.8. Description of the Traveling-Salesman Problem
16.8.1. Applying the Nearest-Neighbor Heuristic
16.9. Interface for the Traveling-Salesman Problem
tsp
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.1.1. Standard Test for Intersecting Line Segments 17.1.2. Computer Test for Intersecting Line Segments
17.2. Interface for Testing Whether Line Segments Intersect
lint
17.3. Implementation and Analysis of Testing Whether Line Segments Intersect 17.4. Description of Convex Hulls
17.4.1. Jarvis's March
17.5. Interface for Convex Hulls
cvxhull
17.6. Implementation and Analysis of Convex Hulls 17.7. Description of Arc Length on Spherical Surfaces
17.7.1. Rectilinear and Spherical Coordinates 17.7.2. Converting Between Coordinate Systems 17.7.3. Computing the Length of an Arc
17.8. Interface for Arc Length on Spherical Surfaces
arclen
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
Index About the Author Colophon
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion