For this project you will create a C++ class for the following Abstract Data Type (ADT):
ADT: StringList
Possible values: Each StringList can store a (possibly empty) list of variable length strings. E.g.:
StringList L1 = { "baker", "able", "charlie", "delta" },
StringList L2 = {},
StringList L3 = { "red", "green", "blue" }
Operations: (let L1 be a StringList)
1. [login to view URL]() - returns the number of strings on L1.
2. [login to view URL]() - returns the sum of the lengths of all the elements of L1.
3. [login to view URL]( string s1 ) - adds s1 to L1 as its last element.
If s1 is already in L1, throw( "Duplicate String" );
4. [login to view URL]( string s1, int pos ) - adds s1 to L1 as its "pos" element. "pos" is 0-based.
If s1 is already in L1, throw( "Duplicate String" );
If pos < 0 or pos > askSize() throw( "Position Out of Range" );
5. [login to view URL]( string s1 ) - adds s1 to L1 as its first element (i.e., pos == 0)
If s1 is already in L1, throw( "Duplicate String" );
6. [login to view URL]( string s1 ) - remove s1 from L1.
If s1 is not found, throw( "String Not Found" );
7. [login to view URL]( int pos ) - remove "pos" element from L1.
If pos is not present, throw( "Position Out of Range" );
8. [login to view URL]( string s1 ) - return the "pos" of string s1 in L1. (Again, 0-based)
If s1 is not in L1, throw( "String Not Found" );
9. [login to view URL]() - sorts the elements of L1 alphabetically.
10. [login to view URL]() - prints the elements of L1 to the screen. Formatted as: able, baker, charlie, delta
11. L1 + L2 - returns a new list which is the union of L1 and L2. L1 and L2 are not modified.
12. L1 - L2 - returns a new list with all occurrences of any string in L2 removed from L1. L1 and L2 are
not modified.
13. L1 == L2 - returns true if L1 and L2 contain exactly the same strings, false otherwise.
14. L1 != L2 - returns true if (L1 == L2) is false, true otherwise.
I will be writing a main() to utilize your class StringList.
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
"Windows XP", "LINUX" (i will compiling in linux using g++)