I need helping writing the following code that does the following pls
Implement the following String List ADT:
A String List is a list (sequence) of strings with the following methods:
1. A constructor that initializes the list to be empty.
2. A boolean isEmpty() method that returns true if the list is empty. Otherwise it returns false.
3. A boolean isFull() method that returns true if the list is full. Otherwise it returns false.
4. An int size() method that returns the number of elements (strings) in the list.
5. A void clear() method that sets the list to be empty.
6. A void insert(String newStr, int position) method that throws a RuntimeException, if the position value is not valid in the list (i.e., beyond the current size of the list or being negative). It also throws a RuntimeException, if the list is full. Otherwise, it inserts newStr at position in the list. If position equals the current number of strings in the list, then newStr is simply appended to the list. Otherwise, newStr is inserted at position in the list, and the original string at position and the following strings in the list are moved to the next position in the list.
Note that position starts from 0. So if, say, the current number of strings in the list is 3, then a valid position value should be between 0 and 3. If the position value is 3, then newStr is appended to the end of the list. If, say, the position value is 0, then newStr is inserted at the beginning of the list, while the original strings at positions 0, 1 and 2 are moved to positions 1, 2 and 3, respectively. In either case, the number of strings in the list becomes 4 after the insertion.
7. A void remove(int position) method that throws a RuntimeException, if the position value is not valid in the list (i.e., beyond the current size of the list or being negative). It also throws a RuntimeException, if the list is empty. Otherwise, it removes the string at position in the list. After the removal, strings that follow the original string at position in the list, if any, are moved ahead by one position.
Note that position starts from 0. So if, say, the current number of strings in the list is 3, then a valid position value should be between 0 and 2. If the position value is 2, then the last string in the list is simply removed. If, say, the position value is 0, then the string at position 0 is removed and the original strings at positions 1 and 2 are moved to positions 0 and 1 respectively. In either case, the number of strings in the list becomes 2 after the removal.
8. A String retrieve(int position) method that throws a RuntimeException, if the position value is not valid in the list (i.e., beyond the current size of the list or being negative). Otherwise, it returns the string at position in the list.
9. A void replace(String newStr, int position) method that throws a RuntimeException, if the position value is not valid in the list (i.e., beyond the current size of the list or being negative). Otherwise, it replaces the string at position with newStr.
Note that certain methods (e.g., insert) in the ADT throw RuntimeException directly. This should NOT happen in a real implementation. You almost always need to implement your own exception type, which can be a subclass of Exception or RuntimeException depending on the situation. Since we have not covered how to define a new Exception type, we use RuntimeException here. In this programming assignment, you are allowed to use RuntimeException. Once we have learned how to defined user exception types, you should not use RuntimeException directly in your solution anymore.
You are required to implement TWO classes based on the String List ADT. The first class, named ContiguousStringList, should utilize a contiguous implementation, that is, the internal representation of the sequence of strings should be an array of strings. The second class, named LinkedStringList, should use a linked data structure to present the sequence of strings.
A separate class called StringListTester is provided to test the two classes that you create. The main method in StringListTester first prompts the user to choose between the two implementations of the string list. Then it lets the user enter strings into the list and then indicate the position at which the string should be inserted. The program will report an error message when the user specifies an invalid position for insertion and let the user to enter another position. Once the user finishes entering the strings, all strings in the list will be printed on the screen in order.
Sample programs in Java are provided as a reference. They are integer queues using contiguous and linked implementations, respectively. List implementations in C++ are also provided as a reference.