Need to add sort() and reverse() methods . dont use recurion. Extend the graphical interface in the LinkedListDemo class to support reverse and sort commands. Files attached. Attachments:

Need to add sort() and reverse() methods . dont use recurion. Extend the graphical interface in the LinkedListDemo class to support reverse and sort commands. Files attached.

Save Time On Research and Writing
Hire a Pro to Write You a 100% Plagiarism-Free Paper.
Get My Paper

Attachments: 

/**
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.
*/

Save Time On Research and Writing
Hire a Pro to Write You a 100% Plagiarism-Free Paper.
Get My Paper

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); } }

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
/**
This class is used to demonstrate
the operations in the LinkedList1 class.
*/
public class LinkedList1Demo extends JFrame
{
private LinkedList1 ll;
private JTextArea listView;
private JTextField cmdTextField;
private JTextField resultTextField;

public LinkedList1Demo()
{
ll = new LinkedList1();
listView = new JTextArea();
cmdTextField = new JTextField();
resultTextField = new JTextField();

// Create a panel and label for result field
JPanel resultPanel = new JPanel(new GridLayout(1,2));
resultPanel.add(new JLabel(“Command Result”));
resultPanel.add(resultTextField);
resultTextField.setEditable(false);
add(resultPanel, BorderLayout.NORTH);

// Put the textArea in the center of the frame
add(listView);
listView.setEditable(false);
listView.setBackground(Color.GREEN);

// Create a panel and label for the command text field
JPanel cmdPanel = new JPanel(new GridLayout(1,2));
cmdPanel.add(new JLabel(“Command:”));
cmdPanel.add(cmdTextField);
add(cmdPanel, BorderLayout.SOUTH);
cmdTextField.addActionListener(new CmdTextListener());

// Set up the frame
setTitle(“Linked List Demo”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}

/**
Private class that responds to the command that
the user types into the command entry text field.
*/

private class CmdTextListener
implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
String cmdText = cmdTextField.getText();
Scanner sc = new Scanner(cmdText);
String cmd = sc.next();
if (cmd.equals(“add”))
{
if (sc.hasNextInt())
{
// add index element
int index = sc.nextInt();
String element = sc.next();
ll.add(index, element);
}
else
{
// add element
String element = sc.next();
ll.add(element);
}
listView.setText(ll.toString());
pack();
return;
}
if (cmd.equals(“remove”))
{
if (sc.hasNextInt())
{
// remove index
int index = sc.nextInt();
String res = ll.remove(index);
resultTextField.setText(res);
}
else
{
// remove element
String element = sc.next();
boolean res = ll.remove(element);
String resText = String.valueOf(res);
resultTextField.setText(resText);
}
listView.setText(ll.toString());
pack();
return;
}
if (cmd.equals(“isempty”))
{
String resText = String.valueOf(ll.isEmpty());
resultTextField.setText(resText);
return;
}
if (cmd.equals(“size”))
{
String resText = String.valueOf(ll.size());
resultTextField.setText(resText);
return;
}
}
}

/**
The main method creates an instance of the
LinkedList1Demo class which causes it to
display its window.
*/

public static void main(String [ ] args)
{
new LinkedList1Demo();
}
}

Still stressed with your coursework?
Get quality coursework help from an expert!