CS 61B, Spring 1999

MT2 Version B

Professor M. Clancy

Background

Some of the problems on this exam involve intevals of integers. (Note the difference between these intervals and

thsoe you worked with in homework assignment 4, which represented intervals on the real number line.)

The interval [a,b] represents all the integers that are greater than or equal to a and less than or equal to b. For

example, [3,5] represents the set of integers {3, 4, 5}, [-5,-4] represents the set {-5,-4}, and the interval [5,3]

represents the empty set.

The Interval class is defined as follows.

public class Interval {

private int myLeft;

private int myRight;

// Constructor.

public Interval (int left, int right) { ...

}

// Return this's left endpoint.

public int left ( ) {

return myLeft;

}

// Return this's right endpoint.

public int rightt ( ) {

return myRight;

}

// Return a hash value forthis.

public int hashCode ( ) { ...

}

// Return exactly whenthis represents the smae interval asintvl.

public boolean equals (Interval intvl) { ...

}

// Returntrue exactly whenthis contains x.

public boolean contains (int x) { ...

}

// Returntrue whenthis overlapsintvl,

// i.e. contains integers in common withintvl.

public boolean overlaps (Interval intvl) {...

CS 61B, MT2 Version B, Spring 1999

CS 61B, Spring 1999 MT2 Version B Professor M. Clancy 1

}

// Return the result of combiningthis withintvl.

// Precondition:overlaps (intvl).

public Interval extendThrough (Interval intvl) { ...

}

}

Problem 1 (4 poinst, 10 minutes)

The hash function below, a variation on the PCC function from "Real-World Hash Functions," is intended to be

applid to English words as was the function in homework assignment 7. There are at least two sets of table sizes

for which the function will work badly. Name them, and briefly explain your answers.

Suppose for the purposes of this problem that the Interval class from homework assignment 4 is defined as

follows:

public int hashCode ( ) {

int h = 0;

for (int k=0; k <s.length(); k++) {

h = 2 * (h + s.charAt (k));

}

return h;

}

Problem 2 (8 pionts, 24 minutes)

Background

This problem involves the implementation of a class IntervalCollection that stores a collection of

nonoverlapping intervals of integers. (See the first page for more information about intervals of integers.) The

class provides three methods: a constructor, an insert method, and an intervalContaining method that, given an

integer, returns a reference to the interval in the collection that contains the integer. The intervalCollection class

can be implemented, using hashing, in such a way as to optimize the intervalContaining operation. That is, if

the interval [-5,-3] were in the collection, then the methods calls

intervalContaining (-5)

intervalContaining (-4)

intervalContaining (-3)

would all return the interval [-5,-3] quickly.

Part a

Describe, using words and a diagram, an implementation of the IntervalCollection class that uses a

java.util.Hashtable object to optimize the intervalContaining operation as described above. Assume for the

purposes of illustration that chaining is used to resolve collisions and that the intervals [30,32] and [-12,-11]

collide; include these intervals in your diagram.

Part b

Write the intervalContaining method for the IntervalCollection class. Given an int argument,

intervalContaining returns a reference to the interval in the collection that contains the argument, or null if no

CS 61B, MT2 Version B, Spring 1999

Background 2

##### Document information

Uploaded by:
shashidhar_p43

Views: 821

Downloads :
0

Address:
Engineering

University:
Bhupendra Narayan Mandal University

Subject:
Data Structures

Upload date:
02/04/2013