Using Java create a program that does the following: Modify the LinkedList1 class by adding sort()...

60.1K

Verified Solution

Question

Programming

Using Java create a program that does the following: Modify theLinkedList1 class by adding sort() and reverse() methods. Thereverse method reverses the order of the elements in the list, andthe sort method rearranges the elements in the list so they aresorted in alphabetical order. Do not use recursion to implementeither of these operations. Extend the graphical interface in theLinkedList1Demo class to support sort and reverse commands, and useit to test the new methods. This should have two separate sourcefiles. LinkedList1 Class and LinkedList1Demo.

Include these modifications:

  • Read in the names from an input file.
  • Instead of using a graphical interface, create a menu methodand use it to interface with the user.
  • Include menu options to add, remove and find names as well asto sort and reverse the entire contents of the list.
  • The program should execute until the user enters \"exit.\"

LinkedList1 class:

/**

The LinkedList1 class implements a Linked list.

*/

class LinkedList1

{

/**

The Node class stores a list element

and a reference to the next node.

*/

  

private class Node

{

String value;   

Node next;

  

/**

Constructor.

@param val The element to store in the node.

@param n The reference to the successor node.

*/

  

Node(String val, Node n)

{

value = val;

next = n;

}

  

/**

Constructor.

@param val The element to store in the node.

*/

  

Node(String val)

{

// Call the other (sister) constructor.

this(val, null);

}

}   

private Node first; // list head

private Node last; // last element in list

/**

Constructor.

*/

  

public LinkedList1()

{

first = null;

last = null;

}

  

/**

The isEmpty method checks to see

if the list is empty.

@return true if list is empty,

false otherwise.

*/

  

public boolean isEmpty()

{

return first == null;   

}

  

/**

The size method returns the length of the list.

@return The number of elements in the list.

*/

  

public int size()

{

int count = 0;

Node p = first;   

while (p != null)

{

// There is an element at p

count ++;

p = p.next;

}

return count;

}

  

/**

The add method adds an element to

the end of the list.

@param e The value to add to the

end of the list.   

*/

  

public void add(String e)

{

if (isEmpty())

{

first = new Node(e);

last = first;

}

else

{

// Add to end of existing list

last.next = new Node(e);

last = last.next;

}

}

  

/**

The add method adds an element at a position.

@param e The element to add to the list.

@param index The position at which to add

the element.

@exception IndexOutOfBoundsException When

index is out of bounds.

*/

  

public void add(int index, String e)

{

if (index < 0 || index > size())

{

String message = String.valueOf(index);

throw new IndexOutOfBoundsException(message);

}

// Index is at least 0

if (index == 0)

{

// New element goes at beginning

first = new Node(e, first);

if (last == null)

last = first;

return;

}

// Set a reference pred to point to the node that

// will be the predecessor of the new node

Node pred = first;

for (int k = 1; k <= index - 1; k++)

{

pred = pred.next;   

}

// Splice in a node containing the new element

pred.next = new Node(e, pred.next);

// Is there a new last element ?

if (pred.next.next == null)

last = pred.next;   

}

  

/**

The toString method computes the string

representation of the list.

@return The string form of the list.

*/

  

public String toString()

{

StringBuilder strBuilder = new StringBuilder();

  

// Use p to walk down the linked list

Node p = first;

while (p != null)

{

strBuilder.append(p.value + \"\n\");

p = p.next;

}

return strBuilder.toString();

}

  

/**

The remove method removes the element at an index.

@param index The index of the element to remove.

@return The element removed.

@exception IndexOutOfBoundsException When index is

out of bounds.   

*/

  

public String remove(int index)

{

if (index < 0 || index >= size())

{

String message = String.valueOf(index);

throw new IndexOutOfBoundsException(message);

}

String element; // The element to return   

if (index == 0)

{

// Removal of first item in the list

element = first.value;

first = first.next;

if (first == null)

last = null;   

}

else

{

// To remove an element other than the first,

// find the predecessor of the element to

// be removed.

Node pred = first;

  

// Move pred forward index - 1 times

for (int k = 1; k <= index -1; k++)

pred = pred.next;

  

// Store the value to return

element = pred.next.value;

  

// Route link around the node to be removed

pred.next = pred.next.next;

  

// Check if pred is now last

if (pred.next == null)

last = pred;

}

return element;

}

  

/**

The remove method removes an element.

@param element The element to remove.

@return true if the remove succeeded,

false otherwise.

*/

  

public boolean remove(String element)

{

if (isEmpty())

return false;

  

if (element.equals(first.value))

{

// Removal of first item in the list

first = first.next;

if (first == null)

last = null;   

return true;

}

  

// Find the predecessor of the element to remove

Node pred = first;

while (pred.next != null &&

!pred.next.value.equals(element))

{

pred = pred.next;

}

// pred.next == null OR pred.next.value is element

if (pred.next == null)

return false;

  

// pred.next.value is element

pred.next = pred.next.next;

  

// Check if pred is now last

if (pred.next == null)

last = pred;

  

return true;   

}

  

public static void main(String [] args)

{

LinkedList1 ll = new LinkedList1();

ll.add(\"Amy\");

ll.add(\"Bob\");

ll.add(0, \"Al\");

ll.add(2, \"Beth\");

ll.add(4, \"Carol\");

System.out.println(\"The members of the list are:\");

System.out.print(ll);

}

}

Program Output:

The members of the list are:

Al

Amy

Beth

Bob

Carol

Answer & Explanation Solved by verified expert
3.8 Ratings (725 Votes)
LinkedList1javaimport javaioFileimport javaioFileNotFoundExceptionimport javautilScannerThe LinkedList1 class implements a Linked listpublic class LinkedList1 The Node class stores a list element and a reference to the next node private class Node String value Node next Constructor param val The element to store in the node param n The reference to the successor node NodeString val Node n value val next n Constructor param val The element to store in the node NodeString val Call the other sister constructor thisval null private Node first list head private Node last last element in list Constructor public LinkedList1 first null last null The isEmpty method checks to see if the list is empty return true if list is empty false otherwise    See Answer
Get Answers to Unlimited Questions

Join us to gain access to millions of questions and expert answers. Enjoy exclusive benefits tailored just for you!

Membership Benefits:
  • Unlimited Question Access with detailed Answers
  • Zin AI - 3 Million Words
  • 10 Dall-E 3 Images
  • 20 Plot Generations
  • Conversation with Dialogue Memory
  • No Ads, Ever!
  • Access to Our Best AI Platform: Flex AI - Your personal assistant for all your inquiries!
Become a Member

Other questions asked by students