Catégories Fixation des prix Corporatif
Livre de texte gratuit

# Go Data Structures and Algorithms

265
Langue:  English
Standard introduction to data structures and algorithms using the Go programming language covering stacks, queues, lists, trees, sets, maps, graphs, hashing, searching, and sorting.
Description
Contenu

A concise introduction to data structures and algorithms in Go. Data structures are presented in a container hierarchy that includes stacks and queues as non-traversable dispensers, and lists, sets, and maps as traversable collections. Algorithm analysis is introduced and applied to linear and binary search, bubble sort, selection sort, insertion sort, merge sort and quicksort. The book also covers heaps and heapsort, unbalanced binary search trees, AVL trees, 2-3 trees, hashing, graph representations, and graph algorithms based on depth-and breadth-first search.

Christopher Fox is a Professor and Director of the Undergraduate Program in Computer Science at James Madison University. He holds a Ph.D. in Information Studies and an M.S. in Computer Science from Syracuse University, and M.A. and B.A. degrees in Philosophy from Michigan State University. Dr. Fox has over 20 years experience teaching Computer Science at JMU, Bowling Green State University, Villanova, Rutgers, and Colgate. Dr. Fox also spent a decade in software research and development at various companies, including AT&T Bell Laboratories. He has published numerous articles and several books, including Introduction to Software Engineering in the Unix/C Environment, and Introduction to Software Engineering Design.

• Preface
1. Introduction
1. What Are Data Structures and Algorithms?
2. Structure of the Book
3. The Go Programming Language
4. Review Questions
5. Exercises
2. Built-In Types
1. Simple and Structured Types
2. Simple Types in Go
3. Structured Types in Go
4. Arrays
5. Slices in Go
6. Characters and Strings
7. Review Questions
8. Exercises
1. Specifying Carrier and Method Sets in Go
2. Implementing ADT s in Go
4. Struct Types in Go
5. Interfaces
6. Summary and Conclusion
7. Review Questions
8. Exercises
4. Containers
1. Introduction
2. Varieties of Containers
3. A Container Taxonomy
4. Implementing Containers in Go
5. Review Questions
6. Exercises
5. Assertions
1. Introduction
2. Types of Assertions
3. Assertions and Abstract Data Types
4. Using Assertions
5. Assertions in Go
6. Review Questions
7. Exercises
6. Stacks
1. Introduction
3. The Stack Interface
4. An Example Using Stacks
5. Contiguous Implementation of the Stack ADT
7. Summary and Conclusion
8. Review Questions
9. Exercises
7. Queues
1. Introduction
2. The Queue ADT and Interface
3. An Example Using Queues
4. Contiguous Implementation of the Queue ADT
6. Summary and Conclusion
7. Review Questions
8. Exercises
8. Stacks and Recursion
1. Introduction
2. Balanced Brackets
3. Infix, Prefix, and Postfix Expressions
4. Tail Recursive Algorithms
5. Summary and Conclusion
6. Review Questions
7. Exercises
9. Collections and Iterators
1. Introduction
2. Iteration Design Alternatives
3. The Iterator Design Pattern
4. Iteration in Go
5. Collections, Iterators, and Containers
6. Summary and Conclusion
7. Review Questions
8. Exercises
10. Lists
1. Introduction
2. The List ADT and Interface
3. An Example of Using Lists
4. Contiguous Implementation of the List ADT
6. Example: Modifying a Doubly-Linked Circular List
7. Summary and Conclusion
8. Review Questions
9. Exercises
11. Analyzing Algorithms
1. Introduction
2. Measuring the Amount of Work Done
3. The Size of the Input
4. Which Operations to Count
5. Best, Worst, and Average Case Complexity
6. Summary and Conclusion
7. Review Questions
8. Exercises
12. Function Growth Rates
1. Introduction
2. Definitions and Notation
3. Establishing the Order of Growth of a Function
4. Applying Orders of Growth
5. Summary and Conclusion
6. Review Questions
7. Exercises
13. Basic Sorting Algorithms
1. Introduction
2. Bubble Sort
3. Selection Sort
4. Insertion Sort
5. Shell Sort
6. Summary and Conclusion
7. Review Questions
8. Exercises
14. Recurrences
1. Introduction
2. Setting Up Recurrences
3. Solving Recurrences
4. Summary and Conclusion
5. Review Questions
6. Exercises
15. Merge sort and Quicksort
1. Introduction
2. Merge Sort
3. Quicksort
4. Summary and Conclusion
5. Review Questions
6. Exercises
16. Trees, Heaps, and Heapsort
1. Introduction
2. Basic Terminology
3. Binary Trees
4. Heaps
5. Heapsort
6. Summary and Conclusion
7. Review Questions
8. Exercises
17. Binary Trees
1. Introduction
3. The Binary Tree Type
4. Contiguous Implementation of Binary Trees
5. Linked Implementation of Binary Trees
6. Summary and Conclusion
7. Review Questions
8. Exercises
18. Binary Search and Binary Search Trees
1. Introduction
2. Binary Search
3. Binary Search Trees
4. The Binary Search Tree Type
5. Summary and Conclusion
6. Review Questions
7. Exercises
19. AVL Trees
1. Introduction
2. Balance in AVL Trees
3. Insertion in AVL Trees
4. Deletion in AVL Trees
5. The Efficiency of AVL Operations
6. The AVL Tree Type
7. Summary and Conclusion
8. Review Questions
9. Exercises
20. 2-3 Trees
1. Introduction
2. Properties of 2-3 Trees
3. Insertion in 2-3 Trees
4. Deletion in 2-3 Trees
5. The Two-Three Tree Type
6. Summary and Conclusion
7. Review Questions
8. Exercises
21. Sets
1. Introduction
3. The Set Interface
4. Contiguous Implementation of Sets
6. Sets and Tree Sets in Go
7. Summary and Conclusion
8. Review Questions
9. Exercises
22. Maps
1. Introduction
3. The Map Interface
4. Contiguous Implementation of the Map ADT
6. The map Type in Go
7. Summary and Conclusion
8. Review Questions
9. Exercises
23. Hashing
1. Introduction
2. The Hashing Problem
3. Collision Resolution Schemes
4. Summary and Conclusion
5. Review Questions
6. Exercises
24. Hashed Collections
1. Introduction
2. Hash Table Class
3. HashMaps
4. HashSets
5. Maps in Go
6. Summary and Conclusion
7. Review Questions
8. Exercises
25. Graphs
1. Introduction
2. Directed and Undirected Graphs
3. Basic Terminology
5. The Graph Interface
6. Contiguous Implementation of the Graph ADT
8. Summary and Conclusion
9. Review Questions
10. Exercises
26. Graph Algorithms
1. Introduction
2. Searching Graphs
3. Depth-First Search