Question: I have written this code and need someone to test my code using the test.java file shown below my code. My compiler is currently is

I have written this code and need someone to test my code using the test.java file shown below my code. My compiler is currently is having problem, so if possible please send a screenshot of the output. If my code is wrong please correct it if possible.

Modify the List class of List.java to include method search that recursively searches a linked-list object for a specified value. The method should return a reference to the value if its found; otherwise, it should return null. Use your method in the test program provided below to create a list of integers.

//my code

// 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();

}

}

// search for val in list

public ListNode search(E val)

{

return search_util( firstNode , val );

}

public ListNode search_util(ListNode head, E val)

{

if( head == null )

return null;

if( head.getData() == val )

return head;

else

// searches val in sublist

return search_util( head.getNext() , val );

}

TEST CODE

//test.java

// Program recursively searches a list of numbers.

import java.util.Random;

public class ListTest {

public static void main(String[] args) {

List list = new List<>();

int number;

Random randomNumber = new Random();

// create objects to store in the List

for (int i = 0; i <25; i++) {

number = randomNumber.nextInt(101);

list.insertAtFront(number);

}

list.print();

Integer searchResult = list.search(34);

// display result of searching 34

if (searchResult != null) {

System.out.println("Value found: 34");

}

else {

System.out.println("Value not found: 34");

}

searchResult = list.search(50);

// display result of searching 50

if (searchResult != null) {

System.out.println("Value found: 50");

}

else {

System.out.println("Value not found: 50");

}

searchResult = list.search(72);

// display result of searching 72

if (searchResult != null) {

System.out.println("Value found: 72");

}

else {

System.out.println("Value not found: 72");

}

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!