Mastering Algorithms With C - Kyle Loudon [249]
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