Here are the class definitions of Node and List that impleme
Here are the class definitions of Node and List that implement a linked list.
class Node {
private Node next;
private int key;
Node(Node nxt, int keyValue); // constructor
Node getNext();
int getKey();
void putNext(Node nxt);
}
class List { // assume the class does not use a dummy Node
private Node head;
List(); // constructor
boolean exists(int ky); // returns true if v is in the list
void insertAtHead(int ky); // inserts at the beginning of the list
void insertAtTail(int ky); // inserts at the end of the list
int removeFromHead(); // Returns -1 if the list is empty
void delete(int ky); // delete the element or do nothing if v doesn’t exist
int removeSmallest(); // removes the Node containing the smallest key and returns that key. Returns -1 if the list is empty. Could be duplicate entries, so remove the first
int removeLargest(); // removes the Node containing the largest key and returns that key. Returns -1 if the list is empty. Could be duplicate entries, so remove the first
int maxElement(); // calls the private version, doesn’t delete the
Node int sum(); // calls the private version
int length(); // calls the private version private
int maxElement(Node x); private int sum(Node x); private int length(Node x);
}
1. Assume the addition of the two functions:
public void recursiveDelete(int ky) {
// calls the private version
}
private Node recursiveDelete(int ky, Node n);
Write both functions.
Solution
After seeing the question, I think you are looking for
deleting a Node from Linked List recursively.
Here is the code for the same.
public void recursiveDelete(int ky) {
// check if the head is null
if(head == null)
return;
// if head is not null, start recursiveDelete
recursiveDelete(ky, head);
}
private Node recursiveDelete(int ky, Node n){
// See if we are at end of list
if(n == null)
return null;
// Check to see if current node is one to be deleted
if(n.data == ky){
// Save the next pointer in the node
Node temp = n.next;
// Deallocate the node.
n = null;
// Return the NEW pointer to where we were called from. i.e., the pointer to the next node of the skipped node.
return temp.next;
}
// Check the rest of the list, fixing the next pointer in case the next node is the one removed.
n.next = recursiveDelete(ky, n.next);
// Return the pointer to where we were called from.
return n;
}

