need this program in java please and thanks NOTICE There are
need this program in java please and thanks!
NOTICE: There are NO static variables allowed in this lab. The only class that a static method is allowed is in the TestDriver class. The only static method that you actually really need is main. The purpose of this lab is to give you an opportunity to create your own linked list data structure and implement all the methods specified below to do list operations. The following specifies the linked list class which you must implement. Only implement the methods listed below. Do NOT add any additional member variables. class OrderedLinkedList { private class Node { // NOTE: The member variables are public so the methods // of the OrderedLinkedList class have direct access to them // NO setters and getters are needed – more efficient access. public String payload; public int keyValue; public Node next; // Explicit value constructor for the Node class public Node(String payload, int value) { …. } } private Node first; // This is the only member variable allowed. // You can NOT add any other member variables!!!
public OrderedLinkedList ( ) { … } // default constructor public boolean empty( ) { … } // returns true if list is empty public String getFirst( ) throws Exception { … } // The first node is removed from the list and its payload is returned. // An exception with a meaningful error message is thrown if the list is empty. public String getLast( ) throws Exception { … } // The last node is removed from the list and its payload is returned. // An exception with a meaningful error message is thrown if the list is empty. public void insert(String payload, int key) throws Exception { … } // The insert method creates a new node, puts the input parameter values // into the new node, and then inserts the node into the list in sorted order // based on the keyValue. For example, if a list has 3 nodes with key values // of 5, 10, and 15, insertion of a new node which has a key value of 12 would // require that the new node was inserted after the node with key value of 10. // If the key being inserted is already in the list, throw an Exception with a // meaningful error string. Make sure that you test all possible cases for insertion. public void remove(int key) throws Exception { … } // Traverse the list, keeping track of where the precedessor for each node // is located. When the value is found in some node in the list, make the // predecessor node bypass the node which holds the value. If the key value // is not found, throw an Exception that indicates the error has occurred. public int listCount( ) { … } // Returns the number of nodes in the list. public String getValue(int key) throws Exception { … } // Traverse the list until you locate the requested key value. Return the // payload from the node which has the requested key value. If the key value // is not found, throw an Exception that indicates the error has occurred. public String toString( ) { … } // Override the toString method and create a string that contains the information // from all the nodes currently in the list. The string should be constructed such // that the data from each node will appear on a separate line. If the list is empty // the returned string should indicate that the list was empty. } Implement all the methods of this class and write a test program which thoroughly tests all of the methods in this class. Carefully consider each method and what meaningful test cases are needed to fully test each method. Make sure to identify each test case in your test driver class with a comment. You can write your test program any way you like, but your program must thoroughly exercise your class. Running the test program one time must result in the successful execution of every test case. It can be interactive with the user, or just have some specific hardwired test cases. Make sure that the output generated by your test program clearly indicates what each of your test cases is doing and what the results are. By running your test program one time, you should be convinced that every method of your class is running correctly under all circumstances. Your grade will partially be determined by how good of a job you do in testing your class. Make sure to test all the exception cases! Documentation You must provide complete documentation for the OrderedLinkedList class. Javadoc comments must be provided at the class level that include the author plus an overview of the purpose of the class. Javadoc comments must be provided for each method of the OrderedLinkedList class. The method level comments must include parameter explanations, return explanations, and exception explanations. Any preconditions should be explained with the parameters and exceptions, and postconditions should be explained with the return. You must generate the Javadoc documentation from your comments. You do this by clicking on Run in the NetBeans menu bar. Then click on Generate Javadoc. An HTML page will appear that contains all the comments extracted from the classes in your project. There should be no errors when running the Javadoc tool. Development Strategy Setup your project with the OrderedLinkedList class with all the methods specified containing no code so that the class compiles initially. You will need dummy return statements in some of the methods to get things to compile. Set up your test driver program to create an OrderedLinkedList object. Work on the insert method first followed by the toString method. Once you get those two methods written, you can start adding test cases to your test program to add items to the list and then use the toString method to return the content of the list to be displayed by your test program. Debug and test these methods first before moving on to the other methods. Once these methods are working, then implement and test one OrderedLinkedList class method at a time.
Solution
This is the program
package LinkedList;
import java.sql.SQLException;
/**
OrderedLinkedList class is for implementing linked list
Basic functions such as getFirstNode, remove, insert are implemented.
*/
public class OrderedLinkedList {
/**
The Node class which contains a payload , a key and a next.
next will hold the next node in the linked list
*/
private class Node{
public String payload;
public int keyvalue;
public Node next;
/**
* default constructor for the Node class
* @param payload - contains the string value
* @param keyvalue - integer value which represents a key
*/
public Node(String payload, int keyvalue)
{
this.payload = payload;
this.keyvalue = keyvalue;
}
}
private Node first;
public OrderedLinkedList()
{
}
/**
* checks whether the list is empty
* @return true or false indicating whether the list is empty
*/
public boolean empty()
{
boolean isEmpty = false;
if(first == null)
{
isEmpty = true;
}
return isEmpty;
}
/**
* find the first element in the list
* @throws throws an exception if the list doesnt contain elements
* @return return the payload for the first node
*/
public String getFirst( ) throws Exception{
String Mypayload = \"\";
try{
Mypayload = first.payload;
}
catch (Exception e) {
// TODO: handle exception
System.out.println(\"The list is empty.\");
}
return Mypayload;
}
/**
* find the last element in the list
* @throws throws an exception if the list doesnt contain elements
* @return return the payload for the last node
*/
public String getLast( ) throws Exception
{
String mypayload = \"\";
Node nodes = first;
while(nodes.next != null)
{
nodes = nodes.next;
}
try{
mypayload = nodes.payload;
}catch(Exception e)
{
System.out.println(\"List is empty\");
}
return mypayload;
}
/**
* inserts element in the list by arranging the keys in ascending order
* @param payload - the string to be inserted in the node
* @param key - a unique key value
* @throws throws an exception if the list doesnt contain elements
*/
public void insert(String payload, int key) throws Exception{
if(first == null)
{
first = new Node(payload, key);
first.next = null;
}
else
{
while(first.next != null)
{
if(first.keyvalue > key)
{
Node Currentnode = first;
Currentnode.keyvalue = key;
Currentnode.payload = payload;
Currentnode.next = first;
}
else
{
first = first.next;
}
}
Node node = new Node(payload, key);
first.next = node;
}
}
/**
* removes an element from the list
* @throws throws an exception if the list doesnt contain elements
* @param key - the unique key to be searched
*/
public void remove(int key) throws Exception {
while(first.next!=null)
{
if(first.keyvalue == key)
{
Node nextNode = first.next;
first.keyvalue = nextNode.keyvalue;
first.payload = nextNode.payload;
first.next = nextNode.next;
}
else
{
first = first.next;
}
}
}
/**
* finds the total size of the list
* @return integer - count of nodes in the list
*/
public int listCount( ) {
int count = 0;
if(!empty())
{
while(first.next != null)
{
count++;
first = first.next;
}
}
return count;
}
/**
* finds the value of the key by traversing through the list
* @throws throws an exception if the list doesnt contain elements
* @return string - payload of the key
*/
public String getValue(int key) throws Exception {
String value = \"\";
while(first.next!=null)
{
if(first.keyvalue == key)
{
try{
value = first.payload;
}
catch(Exception e)
{
System.out.println(\"Try again.\");
}
}
else
{
first = first.next;
}
}
return value;
}
/**
* displays the value of the payloads by traversing through the list
* @return string - payload of the key
*/
public String toString( ) {
String values = \"\";
while(first.next != null)
{
values = values + first.payload + \"\ \";
first = first.next;
}
return values;
}
}
This is the main class
package LinkedList;
public class TestDriver {
public static void main(String[] args) throws Exception
{
OrderedLinkedList list = new OrderedLinkedList();
list.insert(\"Apple\", 2);
list.getFirst();
list.getLast();
list.insert(\"Mango\", 1);
list.getValue(2);
}
}
Output:
Apple
Apple
Mango







