Midterm Review Guide  What is an ADT and how would you define it?
 What is a data structure?
 What is the difference between an ADT and a data structure?
 What is a precondition? What are the preconditions for each of your List functions?
 What is a postcondition? Give an example using your List ADT?
 What is an access function? Give an example from your List ADT?
 What is a manipulation procedure? Give an example from your List ADT?
 What is a constructor? What is its purpose?
 What is a destructor? What is its purpose?
 What is a copy constructor? What is its purpose? How do you call a copy constructor?
 What is the difference between a deep and shallow copy?
 How would you write a copy constructor to create a deep copy of an object?
 What are the advantages of using an array over a linked list to store data?
 What are the advantages of using a linked list over an array to store data?
 How do you write insertFirst and insertLast for a linked list (single and doubly linked)?
 How do you write removeFirst and removeLast for a linked list (doubly linked)?
 What is an iterator?
 How would you write removeIterator, insertIterator, getIterator, startIterator, advanceIterator?
 What is the difference between a singly and doubly linked list?
 What is the difference between a Stack and a Queue?
 What are FIFO and LIFO and how do they relate to stacks and queues?
 How do you write enqueue and dequeue for a Queue?
 How do you write push and pop for a Stack?
 How would you write the Stack and Queue constructors
 What is recursion?
 What are the different parts of a recursive function (hint think base case and recursive call)?
 What is the function call stack? Describe how recursion works with the function call stack?
 What is a stack frame?
 What is a stack overflow error?
 What is the difference between iteration and recursion?
 How do you write the following recursive functions: bunnyEars, fibonnacci, powerOfN, factorial?
 How do you print a list in reverse both iteratively and recursively
 What is the BigO runtime of binary search in the best, worst and average cases
 What is the BigO runtime of linear search in the best, worst and average cases
 How do you write binary search (recursive)?
 How do you write linear search (not recursive)?
