Final Exam Study Guide
CSE 326 A: Data Structures
Winter 2008
Final Exam, 8:30 - 10:20, Thursday, March 20, 2008
- Exam policies
-
You may bring your own notes and the text book to the final.
-
The exam begins promptly at 8:30 and ends at 10:20.
- Topics covered
-
Linked lists. Simple linked lists, doubly linked lists,
sparse polynomials. Cursor implementation of pointers.
-
Stacks and Queues, array and list implementations.
-
Recursion. Designing algorithms recursively, using call by reference.
-
Analysis of algorithms. Worst case, average case, upper bound, lower
bound, analyzing loops, recurrences, amortized complexity.
-
Sorting. Insertion sort, quicksort, mergesort, heapsort.
-
The memory hierarchy. Programming for the memory hierarchy. Temporal and
spacial locality. Prefetching.
-
Trees and traversals. Multiway trees, preorder, postorder.
-
Binary search trees. Inorder traversal, insert, delete, find.
-
AVL trees. Single and double rotations, insert, delete, find.
-
Splay trees. Splaying, insert, delete, find.
-
B-trees. Split for insert, borrow and merge for delete.
-
K-d trees and quad trees. Range queries and nearest neighbor search.
-
Binary Heaps and Binomial Queues. Findmin, Deletemin, Insert. Additional operations of merge, increase, decrease.
- More Sorting. Radix sort. Lower bound on sorting.
In-place sorting. Stable sorting.
- Disjoint Union/Find. Up-trees. Weighted union and path compression.
- Graphs. Directed and undirected.
Adjacency list and adjacency matrix representations.
- Topological sorting.
- Graph searching. Depth-first, breadth-first search, best-first search, A* search.
- Shortest paths. Dijkstra's algorithm.
- Euler paths and circuits.
- Hashing. Hash functions. Chaining and closed hashing. Extendible hashing.
- P and NP. NP-complete problems.
-
Study suggestions
-
Do concrete problems from the book.
-
Do the relevant questions from the final exam from Autumn 2005.
-
Practice all the operations in binary search trees, AVL trees,
splay trees, B-trees, k-d trees, and quad trees, binary heaps, and binomial queues, hashing with linear probing, quadradic probing, and double hashing,
disjoint union / find with weighted union and path compression. Be able to execute basic graph search algorithms and minimum spanning tree. Be able to execute sorting algorithms mergesort, quicksort, heapsort, insertion sort, and radix sort.
You need to know how to implement pointers with arrays (cursor implemenation
of pointers). Practice analysis of algorithms.