Home Page Icon
Home Page
Table of Contents for
17.5. Interface for Convex Hulls
Close
17.5. Interface for Convex Hulls
by Kyle Loudon
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.1.1. Constructing an Interpolating Polynomial
13.1.2. Evaluating an Interpolating Polynomial
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.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
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.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
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
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
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
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
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
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
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
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
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
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
Copyright
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
17.4. Description of Convex Hulls
Next
Next Chapter
cvxhull
Interface for Convex Hulls
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset