
CIS 350
Data Structures and Algorithm Analysis
Lecture Notes
Course Overview
- Data Structures
 - Algorithms
 - Software Design
 - Data Abstraction
 
Abstract Data Types (ADT's)
- Specify ADT
 - Representation
 - Data type - bindings
 - Type declaration statement
 
Built-in Types
- Static Type Checking
 - Dynamic Type Checking
 - Storage Management
Allocation, garbage, dangling reference
 - Elementary Built-in Types
char,Boolean,integer,real
 
Structured Types
- Implentation and Operations
 - Arrays, Records, Strings
 
Object-Orinted Programming
- Abtract Data Types
 - Inheritance
 - Templates
 
Stacks
- Attributes and Operations
 - Array Implementation
 
Queues
- Attributes and Operations
 - Array Implementation
 
Program Complexity
- Complexity
  
    - Efficiency
    
 - Best/Worst/Average Case Performance
    
 - Units - Big Oh/Omega/Theta
  
 
 - Rules for Order Arithmetic
  
    - Multiplicative constants
    
 - Addition/Multi. Rules
  
 
 
Complexity Examples
Complexity Computation Heuristics
More Complexity Examples
Recursion
- Recursive Algorithms
 - Recursive Data Structure
 
Simulating Recursion
- Parameter Transmission
 - Storage
 - Transfer Control - Exit, Entry
 
Pointer Variables
- Address Operator
 - Output
 - Pointers and Structs
 
Singly Linked Lists
- Basic Operations
 - Array Implementation
 
Linked List Operators
- Removing Nodes
 - Inserting Nodes
 - Pointer Implementation
 
Search
- Ordered/Unordered Lists
 - Internal/External Searches
 - Adding/Deleting Array Elements
 - Array vs. Stack
 - Ordered Lists
 
Hash tables
- Hashing Functions
 - Library Example
 - Collisions
 - Clustering
 - Displacement
 - Collision Resolution
   
   - Linear Probing - Succesful/Unsuccessful
   
 - Quadratic Probing - Successful/Unsuccessful
   
 
 
Hash Collision Resolution and Complexity
- Strategies
  
  - Linear Probing
  
 - Buckets
  
 - Chaining
  
 
 - Complexity of Hashing - Insert/Delete/Member
 - What affects runtime?
 - Sample Hashing Functions
 
Trees
- Tree Variations
 - Class BinTree
 
Binary Search Tree(BST)
Tree Traversals
- Inorder
 - Preorder
 - Postorder
 - Threaded Trees
 
AVL Trees
Additional Trees
- Priority Queues
 - General Trees
 - Tries
 
B-trees
Graphs
- Terminology Review
 - Isomorphic vs equal graphs
 - Bipartite Graphs
 - K-regular Graphs
 - Graph ADT Operators
 
Graph Representations
- Incidence and Adjacency Matrices
 - Adjacency and Edge Lists
 
More Graph Terminology
- Connected Graphs
 - Spanning Tree
 - Algorithms
 
Biconnected Graphs
- Definition
 - Determining
 - Example
 
Euler Circuit
- Definition
 - Fleury's Algorithm
 
Graph Representations
Augmenting Path
Directed Graphs (Digraphs)
- Weakly/Stongly Connected
 - Adjacency Matrix and List
 - Incidence Matrix and List
 - Changes in Digraph ADT?
 
Shortest Path
- Dijkstra
 - Floyd's Algorithm
 - Warshall's Transitive Closure
 
Topological sorting
- Definition
 - Directed Acyclic Graph(DAG)
 
Sorting Algorithms
- Shell 
 - External Sorting
 - Merge Sort
 - In situ arrays