Data Structures
This course includes
Lessons
Lessons
24+ Lessons | 5+ Exercises | 84+ Quizzes |
Need guidance and support? Click here to check our Instructor Led Course.
Here's what you will learn
Download Course OutlineLessons 1: Abstract Data Types and Sequentially Allocated Bags
- The Bag
- Specifying a Bag
- Using the ADT Bag
- Using an ADT Is Like Using a Vending Machine
- Bag Implementations That Use Arrays
- Using a Fixed-Size Array to Implement the ADT Bag
- The Pros and Cons of Using an Array to Implement the ADT Bag
Lessons 2: Implementing Bags with Linked Allocation
- A Bag Implementation That Links Data
- Linked Data
- A Linked Implementation of the ADT Bag
- Removing an Item from a Linked Chain
- A Class Node That Has Set and Get Methods
- The Pros and Cons of Using a Chain to Implement the ADT Bag
Lessons 3: Introduction to Analysis of Algorithms
- The Efficiency of Algorithms
- Motivation
- Measuring an Algorithm's Efficiency
- Picturing Efficiency
- The Efficiency of Implementations of the ADT Bag
Lessons 4: Stacks
- Stacks
- Specifications of the ADT Stack
- Using a Stack to Process Algebraic Expressions
- Stack Implementations
- A Linked Implementation
- An Array-Based Implementation
Lessons 5: Queues
- Queues, Deques, and Priority Queues
- The ADT Queue
- Queue, Deque, and Priority Queue Implementations
- A Linked Implementation of a Queue
- An Array-Based Implementation of a Queue
Lessons 6: Deques
- The ADT Deque
- A Doubly Linked Implementation of a Deque
Lessons 7: Lists
- Lists
- Specifications for the ADT List
- Using the ADT List
- List Implementations That Use Arrays
- Using an Array to Implement the ADT List
- Operations on a Chain of Linked Nodes
- Beginning the Implementation
- Continuing the Implementation
- A Refined Implementation
- The Efficiency of Using a Chain to Implement the ADT List
Lessons 8: Basic Sorting Algorithms
- An Introduction to Sorting
- Organizing Java Methods That Sort an Array
- Selection Sort
- Insertion Sort
Lessons 9: Faster Sorting Algorithms
- Faster Sorting Methods
- Merge Sort
- Quick Sort
- Radix Sort
Lessons 10: Sorted Lists
- Specifications for the ADT Sorted List
- A Linked Implementation
Lessons 11: Searching a List
- Searching
- The Problem
- Searching an Unsorted Array
- Searching a Sorted Array
- Searching an Unsorted Chain
- Searching a Sorted Chain
- Choosing a Search Method
Lessons 12: Dictionary as an Associative ADT
- Dictionaries
- Specifications for the ADT Dictionary
- Using the ADT Dictionary
Lessons 13: Sequential Hash Tables
- Introducing Hashing
- What Is Hashing?
- Hash Functions
- Resolving Collisions
Lessons 14: Bucket Hashing
Lessons 15: Introduction to Trees
- Tree Concepts
- Traversals of a Tree
- Examples of Binary Trees
- Examples of General Trees
Lessons 16: Implementation of Binary Trees
- An Implementation of the ADT Binary Tree
Lessons 17: Binary Search Trees
- Getting Started
- Searching and Retrieving
- Traversing
- Adding an Entry
- Removing an Entry
- The Efficiency of Operations
- An Implementation of the ADT Dictionary
Appendix A Java Essentials
- Introduction
- Java Basics
- Simple Input and Output Using the Keyboard and Screen
- The if-else Statement
- The switch Statement
- Enumerations
- Scope
- Loops
- The Class String
- The Class StringBuilder
- Using Scanner to Extract Pieces of a String
- Arrays
- Wrapper Classes
Appendix B Java Classes
- Objects and Classes
- Using the Methods in a Java Class
- Defining a Java Class
- Enumeration as a Class
- Packages
- Generic Data Types
Appendix C Creating Classes from Other Classes
- Composition
- Inheritance
- Type Compatibility and Superclasses
- Polymorphism
Appendix D Designing Classes
- Encapsulation
- Specifying Methods
- Java Interfaces
- Choosing Classes
- Reusing Classes
Appendix E Handling Exceptions
- The Basics
- Handling an Exception
- Throwing an Exception
- Programmer-Defined Exception Classes
- Inheritance and Exceptions
- The finally Block
Appendix F File Input and Output
- Preliminaries
- Text Files
- Binary Files
Appendix G Documentation and Programming Style
- Naming Variables and Classes
- Indenting
- Comments