/** * Inserts the specified key-value pair into the symbol table while maintaining the * ordering of keys. Overwrites the old value with the new value if the symbol table * already contains the specified key. Deletes the specified key (and its associated * value) from this symbol table if the specified value is {@code null}. * * @param key the key * @param val the value * @throws IllegalArgumentException if {@code key} is {@code null} */ public void put(Key key, Value val) { // TODO // Change this code to make sure the list remains sorted! Also, solve this using recursion. // To do this, you will need to add a recursive helper function that takes the front of a // list (Node) as an argument and returns the front of the modified list (Node). if (key == null) throw new IllegalArgumentException("first argument to put() is null"); if (val == null) { delete(key); return; } for (Node x = first; x != null; x = x.next) { if (key.equals(x.key)) { x.val = val; return; } } first = new Node(key, val, first); n++; } You may not use the keys() method in your code. You are modifying the implementation of the methods, but not their interface or contract.
/**
* Inserts the specified key-value pair into the symbol table while maintaining the
* ordering of keys. Overwrites the old value with the new value if the symbol table
* already contains the specified key. Deletes the specified key (and its associated
* value) from this symbol table if the specified value is {@code null}.
*
* @param key the key
* @param val the value
* @throws IllegalArgumentException if {@code key} is {@code null}
*/
public void put(Key key, Value val) {
// TODO
// Change this code to make sure the list remains sorted! Also, solve this using recursion.
// To do this, you will need to add a recursive helper function that takes the front of a
// list (Node) as an argument and returns the front of the modified list (Node).
if (key == null) throw new IllegalArgumentException("first argument to put() is null");
if (val == null) {
delete(key);
return;
}
for (Node x = first; x != null; x = x.next) {
if (key.equals(x.key)) {
x.val = val;
return;
}
}
first = new Node(key, val, first);
n++;
}
You may not use the keys() method in your code. You are modifying the implementation of the
methods, but not their interface or contract.
Trending now
This is a popular solution!
Step by step
Solved in 3 steps