CIS 350 Assignment 1 Fall 2000 For your first assignment you will have the opportunity to explore object-oriented programming as a means of implementing stacks and queues. In simulations, waiting lists are implemented using either a LIFO or FIFO policies. Your task will be to write a client program that allows the user to determine at run-time whether a given item in a 6 element array is to be managed using a LIFO or FIFO policy for simulation purposes. Under a LIFO policy new items are pushed onto a stack and are removed by popping items off the stack. Under a FIFO policy new items are enqueued and dequeued from a queue. To allow the user to determine a run-time that policy will be used for a given item, you will need to declare stack and queue objects as descendants from a common ancestor. The ancestor type (or base class) will also serve as the basis to declaring the array element type. Your programming task is to implement a stack class, a queue class, a common ancestor class, and an array class. You will then need to write a client program that demonstrates the degree to which your stack and queue objects can be used interchangeably. For example, you might define a procedure, which display the contents of the stack or queue passed as its input parameter. You also should devise experiments which demonstrate the weaknesses of your implementations (e.g. "extra" method calls which are not part of the stack ADT specification). Your output must display information with sufficient detail to make it possible for me to trace the execution of your program. You may do your work on Unix or on a PC. You may write your programs using C++ or Java. Your solution must involve the implementation of the stack, queue, and array ADT's as object classes descended from a common ancestor (perhaps some list or table type). As mentioned in class, the only operations allowed on instances of stacks or queues, are the methods defined for their classes (i.e. type cheating is not allowed). Your ADT's must be implemented in using C++ classes or their equivalent. Do not forget what you were taught about structured programming and top-down modular design (and testing) in CIS 200. You will need to turn in a properly commented source listing of your problem solution, which includes the messages generated by the compiler. You will also need to turn in the sample run, along with a 3 to 5 page memo describing your solution with emphasis on the data structures used and a discussion of the efficiency of your solution (including relevant "big-Oh" type information). Assigned: 9-19-00 Due date: 10-10-00