CSE 373, Autumn 2002: Homework 1

Due 10/11/2002

For all program or data structure design problems such as the two below you must provide pseudocode (see the manual) and an adequate explanation of the methods. It is often helpful to include small examples demonstrating the methods. Straight pseudocode with no additional documentation is not enough.  Your pseudocode can contain English if needed.  Each problem should be answered on a separate sheets of paper so they can be graded by different TAs.  Your name should be at the top of every page.
  1. (10 points) The classic way to evaluate a polynomial is Horner's Rule. Horner's rule can be stated recursively as follows:

  2. Let p(x) = a0 + a1*x + a2*x^2 + ... + ak*x^k be a polynomial. Note that * means "times"and ^ means "to the power". To evaluate the polynomial p(x) at c, first let r be the result of evaluating the polynomial a1 + a2*x + a3*x^2 + ... + ak*x^(k-1) at c, then evaluate the final result as a0 + c*r.
  3. (10 points) We would like to implement the abstract data type called "bag of blobs".  A bag has a maximum size Msize and supports insert, delete, IsEmpty, IsFull, and perhaps other operations.  Insert adds a new blob to the bag and Delete removes a blob from the bag.  Assume blob is a record type.  A bag of blobs can be implemented using an array A[1..Msize] of blob pointers.  If there are k blobs in the bag then the entries A[1], ..., A[k] point to these blobs.  The remaining entries of the array point to null.
  4. (10 points) Consider the linked list representation of unbounded integers described in the lectures.  Carefully design a recursive pseudocode function that adds two integers.  The recursive function should follow the examples on slides 21-23 of the lecture titled "Lists".  Your addition function should have two arguments which are node pointers, and return a node pointer.