Question: File IntList.java contains definitions for a linked list of integers (see previous exercise). The class contains an inner class IntNode, which holds information for a
File IntList.java contains definitions for a linked list of integers (see previous exercise). The class contains an inner class IntNode, which holds information for a single node in the list (a node has a value and a reference to the next node) and the followingIntList methods:
public IntList()constructor; creates an empty list of integers
public void addToFront(int val)takes an integer and puts it on the front of the list
public void addToEnd(int val)takes an integer and puts it on the end of the list
public void removeFirst()removes the first value from the list
public void print()prints the elements in the list from first to last
File IntListTest.java contains a driver that allows you to experiment with these methods. Save both of these files to your directory. If you have not already worked with these files in a previous exercise, compile and run IntListTest and play around with it to see how it works. Then add the following methods to the IntList class. For each, add an option in the driver to test the method.
1. public void printRec()prints the list from first to last using recursion. Hint:The basic idea is that you print the first item in the list then do a recursive call to print the rest of the list. This means you need to keep track of what hasnt been printed yet (the rest of the list). In particular, your recursive method needs to know where the first item is. Note that printRec() has no parameter so you need to use a helper methodthat does most of the work. It should have a parameter that lets it know where the part of the list to be printed starts.
2. public void printRecBackwards()prints the list from last to first using recursion.Hint:Printing backward recursively is just like printing forward recursively except you print the rest of the list before printing this element. Simple!
// *************************************************************** // IntListTest.java // // Driver to test IntList methods. // *************************************************************** import java.util.Scanner; public class IntListTest { private static Scanner scan; private static IntList list = new IntList(); //---------------------------------------------------------------- // Creates a list, then repeatedly prints the menu and does what // the user asks until they quit. //---------------------------------------------------------------- public static void main(String[] args) { scan = new Scanner(System.in); printMenu(); int choice = scan.nextInt(); while (choice != 0) { dispatch(choice); printMenu(); choice = scan.nextInt(); } } //---------------------------------------- // Does what the menu item calls for. //---------------------------------------- public static void dispatch(int choice) { int newVal; switch(choice) { case 0: System.out.println("Bye!"); break; case 1: //add to front System.out.println("Enter integer to add to front"); newVal = scan.nextInt(); list.addToFront(newVal); break; case 2: //add to end System.out.println("Enter integer to add to end"); newVal = scan.nextInt(); list.addToEnd(newVal); break; case 3: //remove first element list.removeFirst(); break; case 4: //print list.print(); break; default: System.out.println("Sorry, invalid choice") } }
//----------------------------------------- // Prints the user's choices //----------------------------------------- public static void printMenu() { System.out.println(" Menu "); System.out.println(" ===="); System.out.println("0: Quit"); System.out.println("1: Add an integer to the front of the list"); System.out.println("2: Add an integer to the end of the list"); System.out.println("3: Remove an integer from the front of the list"); System.out.println("4: Print the list"); System.out.print(" Enter your choice: "); } }
// *************************************************************** // FILE: IntList.java // // Purpose: Defines a class that represents a list of integers //// *************************************************************** public class IntList { private IntNode front; //first node in list //----------------------------------------- // Constructor. Initially list is empty. //----------------------------------------- public IntList() { front = null; } //----------------------------------------- // Adds given integer to front of list. //----------------------------------------- public void addToFront(int val) { front = new IntNode(val,front); } //----------------------------------------- // Adds given integer to end of list. //----------------------------------------- public void addToEnd(int val) { IntNode newnode = new IntNode(val,null); //if list is empty, this will be the only node in it if (front == null) front = newnode; else { //make temp point to last thing in list IntNode temp = front; while (temp.next != null) temp = temp.next; //link new node into list temp.next = newnode; } } //----------------------------------------- // Removes the first node from the list. // If the list is empty, does nothing. //----------------------------------------- public void removeFirst() { if (front != null) front = front.next; } //------------------------------------------------ // Prints the list elements from first to last. //------------------------------------------------ public void print() { System.out.println("--------------------"); System.out.print("List elements: "); IntNode temp = front; while (temp != null) { System.out.print(temp.val + " "); temp = temp.next; } System.out.println(" ----------------------- "); } //************************************************************* // An inner class that represents a node in the integer list. // The public variables are accessed by the IntList class. //************************************************************* private class IntNode{public int val; //value stored in node public IntNode next; //link to next node in list //------------------------------------------------------------------ // Constructor; sets up the node given a value and IntNode reference //------------------------------------------------------------------ public IntNode(int val, IntNode next) { this.val = val; this.next = next; } } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
