### CS1500
Algorithms and Data Structures for Engineering, FALL 2012

### HW4 Pointers

Problem1 Write the following two functions:

int* ReverseArray (int X[], int size) - returns an array containing all elements from the input array in reverse order

int Median (int* , int ) - returns the median element of the input array (which may or may not be sorted)

This problem does not require pseudocode.

EXTRA CREDIT: Write the median function above with an algorithm that
requires only linear time. If you solve the extra credit, the pseudocode is required to show the algorithm for finding the median value.

Problem2 - same problem as in hw3, only now you have to handle collisions in your hash table.

Take as input the name of the text file (create your own text
document for testing purposes). Process the text in the file,
keeping track for each word of the number of occurrences.
Output each word and its count.

Hint: Implement a hash functionthat
maps words into keys, then use the keys as word ID-s and as hash table
indices. To handle collisions, each node in your table is going
to be the head of a linked list which contains all words/counts that
have been hashed to that node index.

For this problem you are required to submit pseudocode.

While for HW3 a look-up table containing the words encountered "so far" is acceptable, the same is not OK for this assignment. You really have to use a hash function, linked lists, and an array or vector (as hash table) such that for every word

* hushFunction(word)=key

* A[key] is the listhead of the list containing all words that hash to key.