Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Modify the List class of Figure 21.3 in the textbook to include a method that recursively searches a linked-list for a specified value. Ensure that

Modify the List class of Figure 21.3 in the textbook to include a method that recursively searches a linked-list for a specified value. Ensure that the name of your method includes your last name. The method must return a reference to the value if it is found; otherwise, it must return null. Use your method in a test program that creates a list of integers. The program must prompt the user for a value to locate in the list.

// Fig. 21.3: List.java // ListNode and List class declarations. package com.deitel.datastructures; import java.util.NoSuchElementException; // class to represent one node in a list class ListNode { // package access members; List can access these directly E data; // data for this node ListNode nextNode; // reference to the next node in the list // constructor creates a ListNode that refers to object ListNode(E object) {this(object, null);} // constructor creates ListNode that refers to the specified // object and to the next ListNode ListNode(E object, ListNode node) { data = object; nextNode = node; } // return reference to data in node E getData() {return data;} // return reference to next node in list ListNode getNext() {return nextNode;} } // class List definition public class List { private ListNode firstNode; private ListNode lastNode; private String name; // string like "list" used in printing // constructor creates empty List with "list" as the name public List() {this("list");} // constructor creates an empty List with a name public List(String listName) { name = listName; firstNode = lastNode = null; } // insert item at front of List public void insertAtFront(E insertItem) { if (isEmpty()) { // firstNode and lastNode refer to same object firstNode = lastNode = new ListNode(insertItem); } else { // firstNode refers to new node firstNode = new ListNode(insertItem, firstNode); } } // insert item at end of List public void insertAtBack(E insertItem) { if (isEmpty()) { // firstNode and lastNode refer to same object firstNode = lastNode = new ListNode(insertItem); } else { // lastNode's nextNode refers to new node lastNode = lastNode.nextNode = new ListNode(insertItem); } } // remove first node from List public E removeFromFront() throws NoSuchElementException { if (isEmpty()) { // throw exception if List is empty throw new NoSuchElementException(name + " is empty"); } E removedItem = firstNode.data; // retrieve data being removed // update references firstNode and lastNode if (firstNode == lastNode) { firstNode = lastNode = null; } else { firstNode = firstNode.nextNode; } return removedItem; // return removed node data } // remove last node from List public E removeFromBack() throws NoSuchElementException { if (isEmpty()) { // throw exception if List is empty throw new NoSuchElementException(name + " is empty"); } E removedItem = lastNode.data; // retrieve data being removed // update references firstNode and lastNode if (firstNode == lastNode) { firstNode = lastNode = null; } else { // locate new last node ListNode current = firstNode; // loop while current node does not refer to lastNode while (current.nextNode != lastNode) { current = current.nextNode; } lastNode = current; // current is new lastNode current.nextNode = null; } return removedItem; // return removed node data } // determine whether list is empty; returns true if so public boolean isEmpty() {return firstNode == null;} // output list contents public void print() { if (isEmpty()) { System.out.printf("Empty %s%n", name); return; } System.out.printf("The %s is: ", name); ListNode current = firstNode; // while not at end of list, output current node's data while (current != null) { System.out.printf("%s ", current.data); current = current.nextNode; } System.out.println(); } } ****************** and the test file // Fig. 21.4: ListTest.java // ListTest class to demonstrate List capabilities. import com.deitel.datastructures.List; import java.util.NoSuchElementException; public class ListTest { public static void main(String[] args) { List list = new List<>(); // insert integers in list list.insertAtFront(-1); list.print(); list.insertAtFront(0); list.print(); list.insertAtBack(1); list.print(); list.insertAtBack(5); list.print(); // remove objects from list; print after each removal try { int removedItem = list.removeFromFront(); System.out.printf("%n%d removed%n", removedItem); list.print(); removedItem = list.removeFromFront(); System.out.printf("%n%d removed%n", removedItem); list.print(); removedItem = list.removeFromBack(); System.out.printf("%n%d removed%n", removedItem); list.print(); removedItem = list.removeFromBack(); System.out.printf("%n%d removed%n", removedItem); list.print(); } catch (NoSuchElementException noSuchElementException) { noSuchElementException.printStackTrace(); } } } Please also provide the change to the code that will allow for the program to prompt the user for a value to locate in the list.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Building The Data Lakehouse

Authors: Bill Inmon ,Mary Levins ,Ranjeet Srivastava

1st Edition

1634629663, 978-1634629669

More Books

Students also viewed these Databases questions

Question

8. Demonstrate aspects of assessing group performance

Answered: 1 week ago