CSC 320 Assignment 4 Due 29 March 2006 For this assignment, you are to create a hash table (not use the built-in Java table). This table will use open hashing. It will be used to hold pixels in an image. Each node linked from one entry in the hash table will have three fields: pixel value, x,y location in the image and link to the next node. Each entry in the hash table will have two fields: number of pixels in the list and link to the first list element. Your program will be menu driven. It will display an image input by the user at run time (as we have done before). There will be a menu choice to hash the image, another to restore the image, three to display the red, yellow and blues, respectively and a last to display all pixels as recorded in the hash table. As an example, choose red on the menu and only those pixels classified as red will be displayed. This brings us to the question of what is red? or yellow? You must choose the length of your table so that it is 30 or less. Each entry must have qualifications that will put the pixels in a given category. Red, for example might require R >=180 with G and B less than a given threshold, so each pixel hashed to that location does indeed look red. It is up to you to decide on the length of the table. It is also your responsibility to provide ranges in which each possible pixel in an image will go. A good way to check this out is to try the last option on your menu and see what the image looks like. You are going to create the hash function for this. It will involve the RGB values. The same hash function should be used for all pixels but you can use different functions for R, G and B if desired. It would be a good idea to work the function(s) out with pencil and paper before you code. A report, describing your java program, your classes and methods, why you did what you did and what you like the most about the program should be written. Include the time complexity of your algorithm. (The report is your documentation and an important part of your grade.)