CS 3100 Study Guide for Last Part of Term
COMPUTER SCIENCE 3100 -- Data Structures and Algorithms
Below you will find study questions for chapters 11-13. If you
want more, you can browse the
study guides for the Fall 1998 semester of CS3100.
The final exam will cover mostly material from chapters eleven
through thirteen. However one thing builds upon another and so
some questions will relate to topics covered earlier, notably
big-O analysis (chapter nine) and trees (chapter ten).
Chapter Eleven -- Tables and Priority Queues
-
Know what the "basic operations" are that "define the ADT table"
(c.f. pp. 517-519). Understand what these operations do well
enough to write specifications for them.
-
Be aware of the advantages and disadvantages of various
implementations of the ADT table. In particular if I name a
table operation, you should be able to discuss how efficient that
operation can be made in various table implementations.
-
Know what the "basic operations" are that "define the ADT
priority queue" (c.f. pp. 536-537). Understand what these
operations do well enough to write specifications for them.
-
Understand how to implement a priority queue using an ordered
list, binary search tree, or heap. Understand the advantages and
disadvantages of the various implementations.
-
Know how to define a heap. Know how to implement a heap with the
array implementation described in the text. Understand how
insertion and deletion are performed in this implementation.
-
Know how heapsort works -- how it transforms a randomly ordered
array into a heap, and how it then uses the heap deletion
operation to sort the array.
Chapter Twelve -- Advanced Implementations of Tables
-
Be able to define 2-3 tree, 2-3-4 tree, red-black tree, and AVL
tree.
-
Know how to conduct a search by key in any of the structures
named above.
-
If I give you a sketch of a 2-3 tree or 2-3-4 tree and tell you
to insert and/or delete some keys, you should be able to
accurately sketch how the tree will look after each operation is
carried out.
-
Know the definition of hashing. Know the advantages and
disadvantages of hashing relative to other implementations of the
ADT table.
-
Know what a hash function is. Know what a perfect hash function
is. Know the two properties that a good hash function must have.
Know several examples of hash functions.
-
Understand the need for collision resolution. Know the
definitions of open addressing and separate chaining and
understand how to implement these forms of collision resolution.
-
Understand the following terms: linear probing, primary and
secondary clustering, quadratic hashing, double hashing.
Understand why it is desirable to make the size of a hash table a
prime or an integer without any small divisors.
-
Know the definition of "load factor" and know the range of load
factors that are well-supported by open addressing and separate
chaining.
Chapter Thirteen -- Graphs
-
Know definitions of graph-related terms such as: graph, vertex,
edge, subgraph, path, cycle, multigraph, connected graph, and
directed graph.
-
Know the basic operations that would be incorporated into the
definition of a graph as an ADT. (c.f. p. 632). Understand what
these operations do well enough to write specifications for them.
-
Understand how to represent a graph and implement its operations
either with an adjacency matrix or an adjacency list. Be able to
discuss the relative efficiencies of the operations depending on
how they are implemented.
-
Remember and understand the algorithms for depth first search,
breadth first search, topological sorting, and finding a minimal
cost spanning tree.