Question

In: Computer Science

Add your own method (or use one or more of the existing methods) to insert the...

Add your own method (or use one or more of the existing methods) to insert the following set of numbers (1, 5, 19, 7, 23, 17, 2) in a linked list (use one function call per number, and preserve the order of insertion). Once inserted print the linked list such that the output displays the numbers in reverse order. (2, 17, 23, 7, 19, 5, 1)

package linkedlist_app;
//-------class with main()-------------------
public class LinkedList_App {
   public static void main(String[] args) {
       linkedList myLL = new linkedList();
       System.out.println("----------------------------------");
       //check for problems: myLL.delete('A');
       myLL.print();
       myLL.insert_at_begining('A');
       myLL.insert_after('X', 'A');
       myLL.insert_at_end('E');
       myLL.print();
       myLL.delete('A');
       myLL.print();
       System.out.println("----------------------------------");
       System.out.println("-- Free ALL Nodes ----------------");
       myLL.freeAll(); myLL.print();
       System.out.println("----------------------------------");
       System.out.println("--Insert at begining: A, B, C ----");
       myLL.insert_at_begining('A');
       myLL.insert_at_begining('B');
       myLL.insert_at_begining('C');
       myLL.print();
   }
}
//--------aNode class---------------------------------------------
class aNode {
   char data;
   aNode next;
   aNode(char mydata) { // Constructor
       data = mydata;
       next = null;
   }
}
//------linkedList class-----------------------------------------------
class linkedList {
    aNode head; // Head of the linked list
    aNode tail; //*** Tail of the linked list
    int size;
    linkedList() { // Constructor
       head = null;// head point to null
       tail=null;//***tail also must point to null
       size =0;
    }
    //-----------------------------------------------------
    public void insert_at_begining(char value) {
       aNode newNode = new aNode(value); // create aNew node
       if(isEmpty()){//***if the node is inserted in empty node then head and tail are same
           tail=newNode;
       }
       newNode.next = head;
       head = newNode;
       size++;
    }
    //-----------------------------------------------------
    public void insert_at_end(char value) {
       aNode newNode = new aNode(value); // create aNew node
           if (isEmpty()) {
               insert_at_begining(value); //**reuse the code already written
           }else{ //**no need to traverse the last node since reference of last node is in tail
               tail.next=newNode;
               tail=newNode;
               size++;
           }
       }
       //-----------------------------------------------------
       public void insert_after(char value, char searchValue) {
           if (isEmpty()) {
               System.out.println("Linked List is empty, no way to insert " + value + " after " + searchValue);
               return;//***for simplicity of the code return the control here
               //***it eliminates complicated nested loop
           }
          
           //find the node with searchValue
            aNode ptr;
            boolean found = false;
            ptr = head;
            while (ptr != null && found == false) {
                if (ptr.data == searchValue) {
                    found = true;
                } else {
                    ptr = ptr.next;
                }
            }
           
            if (ptr == null) {
                System.out.println("Did not find " + searchValue + "Nothing Inserted");
                return;//***for simplicity of the code return the control here
                //***it eliminates complicated nested loop
            }
           
           aNode newNode = new aNode(value); // create aNew node
           newNode.next = ptr.next;
           ptr.next = newNode; //add the node after the searchValue
           if(newNode.next==null)//***it is the last node
               tail=newNode; //***point tail to the last node
           size++;
              
          
       }
       //-----------------------------------------------------
       // Delete the first node with the value
       public void delete(char deleteValue) {
           if (isEmpty()) {
               System.out.println("Linked List is empty, nothing to delete");
               return;//***for simplicity of the code return the control here
                //***it eliminates complicated nested loop
           }
            aNode deletePtr = head; // create a reference to head
            if (head.data == deleteValue && head==tail) { //***only one node in list
                head = head.next; // remove the head and
                tail=tail.next; //tail
                deletePtr = null; // make the node available for garbage collection.
                size--;
                return;//***for simplicity of the code return the control here
                //***it eliminates complicated nested loop
            }
            if(head.data==deleteValue){ //***first node to be deleted
                head = head.next; // remove the head
                deletePtr = null; // make the node available for garbage collection.
                size--;
                return;//***for simplicity of the code return the control here
                //***it eliminates complicated nested loop
            }
           aNode prevPtr;
           deletePtr = prevPtr = head;
           boolean found = false; //find the value to be deleted
           while (deletePtr != null && found == false) {
               if (deletePtr.data == deleteValue) {
                   found = true;
                   prevPtr.next = deletePtr.next;
                   if(deletePtr.next==null)//***last node is deleted
                       tail=prevPtr;
                   deletePtr = null; // make deletePtr available to garbage collection
                   size--;
               } else {
                   prevPtr = deletePtr;
                   deletePtr = deletePtr.next;
               }
           }
           if (found == false) {
               System.out.println("Not able to find/delete " + deleteValue + " in the Linked List");
           }       
          
       }
       //-----------------------------------------------------
       public boolean isEmpty() {
           return head==null;//***single line can work to check whether linked list is empty or not
       }
       //-----------------------------------------------------
       public void print() {
           aNode ptr;
           ptr = head;
           System.out.print("Head--> ");
           while (ptr != null) {
               System.out.print(ptr.data + " --> ");
              ptr = ptr.next;
           }
           System.out.println("NULL");
       }
       //-----------------------------------------------------
       public int getSize() {
           return(size);
       }
       //-----------------------------------------------------
       public void freeAll() {
           aNode freePtr = head;
           while(head != null) {
               head = head.next; // the next two lines are unnecessary, but are included for
               // illustration of how memory is freed up
               // freePtr = null;
               // make the node available for garbage collector
               freePtr = head; // now let the freePtr to the new head
           }
           head = null;
           size = 0;
       }
}
//##############################################
//NOTE:- Changes made in the optimised code shown as *** in the comment line

Solutions

Expert Solution

Here is the completed code for this problem. There is no need to add any new methods as we can use the existing ones to solve this. I have only changed the main method, so that the numbers to be added are added to the beginning of the list each time using insert_at_begining() method, and just simply printed using print() method so that the numbers will be printed in reverse. Note that I have changed the data type of data field of node from char to int since we are dealing with numbers here. Comments are included, go through it, learn how things work and let me know if you have any doubts or if you need anything to change. If you are satisfied with the solution, please rate the answer. Thanks

// LinkedList_App.java

//-------class with main()-------------------

public class LinkedList_App {

      public static void main(String[] args) {

            // creating a linked list

            linkedList myLL = new linkedList();

            // creating an array contains the numbers to be added

            int numbers[] = { 1, 5, 19, 7, 23, 17, 2 };

            // looping and adding each number in the array to the list

            for (int i = 0; i < numbers.length; i++) {

                  // adding to the beginning of the list, so that we can print the

                  // elements in reverse order

                  myLL.insert_at_begining(numbers[i]);

            }

            // now simply printing the list, the numbers will be displayed in

            // reverse order.

            myLL.print();

      }

}

// --------aNode class---------------------------------------------

class aNode {

      int data;

      aNode next;

      aNode(int mydata) { // Constructor

            data = mydata;

            next = null;

      }

}

// ------linkedList class-----------------------------------------------

class linkedList {

      aNode head; // Head of the linked list

      aNode tail; // *** Tail of the linked list

      int size;

      linkedList() { // Constructor

            head = null;// head point to null

            tail = null;// ***tail also must point to null

            size = 0;

      }

      // -----------------------------------------------------

      public void insert_at_begining(int value) {

            aNode newNode = new aNode(value); // create aNew node

            if (isEmpty()) {// ***if the node is inserted in empty node then head

                                    // and tail are same

                  tail = newNode;

            }

            newNode.next = head;

            head = newNode;

            size++;

      }

      // -----------------------------------------------------

      public void insert_at_end(int value) {

            aNode newNode = new aNode(value); // create aNew node

            if (isEmpty()) {

                  insert_at_begining(value); // **reuse the code already written

            } else { // **no need to traverse the last node since reference of last

                              // node is in tail

                  tail.next = newNode;

                  tail = newNode;

                  size++;

            }

      }

      // -----------------------------------------------------

      public void insert_after(int value, int searchValue) {

            if (isEmpty()) {

                  System.out.println("Linked List is empty, no way to insert "

                              + value + " after " + searchValue);

                  return;// ***for simplicity of the code return the control here

                  // ***it eliminates complicated nested loop

            }

            // find the node with searchValue

            aNode ptr;

            boolean found = false;

            ptr = head;

            while (ptr != null && found == false) {

                  if (ptr.data == searchValue) {

                        found = true;

                  } else {

                        ptr = ptr.next;

                  }

            }

            if (ptr == null) {

                  System.out.println("Did not find " + searchValue

                              + "Nothing Inserted");

                  return;// ***for simplicity of the code return the control here

                  // ***it eliminates complicated nested loop

            }

            aNode newNode = new aNode(value); // create aNew node

            newNode.next = ptr.next;

            ptr.next = newNode; // add the node after the searchValue

            if (newNode.next == null)// ***it is the last node

                  tail = newNode; // ***point tail to the last node

            size++;

      }

      // -----------------------------------------------------

      // Delete the first node with the value

      public void delete(int deleteValue) {

            if (isEmpty()) {

                  System.out.println("Linked List is empty, nothing to delete");

                  return;// ***for simplicity of the code return the control here

                  // ***it eliminates complicated nested loop

            }

            aNode deletePtr = head; // create a reference to head

            if (head.data == deleteValue && head == tail) { // ***only one node in

                                                                                     // list

                  head = head.next; // remove the head and

                  tail = tail.next; // tail

                  deletePtr = null; // make the node available for garbage collection.

                  size--;

                  return;// ***for simplicity of the code return the control here

                  // ***it eliminates complicated nested loop

            }

            if (head.data == deleteValue) { // ***first node to be deleted

                  head = head.next; // remove the head

                  deletePtr = null; // make the node available for garbage collection.

                  size--;

                  return;// ***for simplicity of the code return the control here

                  // ***it eliminates complicated nested loop

            }

            aNode prevPtr;

            deletePtr = prevPtr = head;

            boolean found = false; // find the value to be deleted

            while (deletePtr != null && found == false) {

                  if (deletePtr.data == deleteValue) {

                        found = true;

                        prevPtr.next = deletePtr.next;

                        if (deletePtr.next == null)// ***last node is deleted

                              tail = prevPtr;

                        deletePtr = null; // make deletePtr available to garbage

                                                       // collection

                        size--;

                  } else {

                        prevPtr = deletePtr;

                        deletePtr = deletePtr.next;

                  }

            }

            if (found == false) {

                  System.out.println("Not able to find/delete " + deleteValue

                              + " in the Linked List");

            }

      }

      // -----------------------------------------------------

      public boolean isEmpty() {

            return head == null;// ***single line can work to check whether linked

                                           // list is empty or not

      }

      // -----------------------------------------------------

      public void print() {

            aNode ptr;

            ptr = head;

            System.out.print("Head--> ");

            while (ptr != null) {

                  System.out.print(ptr.data + " --> ");

                  ptr = ptr.next;

            }

            System.out.println("NULL");

      }

      // -----------------------------------------------------

      public int getSize() {

            return (size);

      }

      // -----------------------------------------------------

      public void freeAll() {

            aNode freePtr = head;

            while (head != null) {

                  head = head.next; // the next two lines are unnecessary, but are

                                                 // included for

                  // illustration of how memory is freed up

                  // freePtr = null;

                  // make the node available for garbage collector

                  freePtr = head; // now let the freePtr to the new head

            }

            head = null;

            size = 0;

      }

}

/*OUTPUT*/

Head--> 2 --> 17 --> 23 --> 7 --> 19 --> 5 --> 1 --> NULL


Related Solutions

Add your own method (or use one or more of the existing methods) to insert the...
Add your own method (or use one or more of the existing methods) to insert the following set of numbers (1, 5, 19, 7, 23, 17, 2) in a linked list (use one function-call per number, and preserve the order of insertion). Once inserted print the linked list such that the output displays the numbers in reverse order. (2, 17, 23, 7, 19, 5, 1) JAVA CODE BELOW class aNode { char data; aNode next; aNode(char mydata) { // Constructor...
1) Question with methods use scanner: 1) Create one method that will add four numbers (return...
1) Question with methods use scanner: 1) Create one method that will add four numbers (return method or regular public static void ) 2) Create another method that will subtract four numbers (return method or regular public static void ) 3) Create another method that will multiplay four numbers (return method or regular public static void ) 4) Create another method that will divide four numbers (return method or regular public static void ) 5) Create another method that will...
code the following methods: one returning the average weekly hours and a method to add a...
code the following methods: one returning the average weekly hours and a method to add a weeks hours to the array of hours (this means creating a larger array).
7. Use the substitution & method of INSERT command to populate EMP_PROJ table. INSERT INTO EMP_PROJ...
7. Use the substitution & method of INSERT command to populate EMP_PROJ table. INSERT INTO EMP_PROJ VALUES (‘&empNo’, ‘&projNo’, &hoursWorked); NOTE: enclose &empNo in ‘ ‘ if the datatype is a string – VARCHAR2 or CHAR If empNo is NUMBER datatype then do not enclose &empNo in ‘ ‘! empNo projNo hoursWorked 1000 30 32.5 1000 50 7.5 2002 10 40.0 1444 20 20.0 1760 10 5.0 1760 20 10.0 1740 50 15.0 2060 40 12.0
ON PYTHON Exercise 4. Insert one or more conditional statements at the end of the source...
ON PYTHON Exercise 4. Insert one or more conditional statements at the end of the source code listed in exercise4.py that prints the messages ‘You entered a negative number’, ‘You entered a zero’, or ‘You entered a positive number’ based on the value entered by the user. value = int( input( 'Enter the value: ') ) # insert the additional statement(s) here Exercise 5. Insert one or more conditional statements at the end of the source code listed in exercise5.py...
List and describe the four methods of surveying sample population, use your own definition, and provide...
List and describe the four methods of surveying sample population, use your own definition, and provide an example for each.
Use the scientific method to come up with, and create your own testable experiment. The experiment...
Use the scientific method to come up with, and create your own testable experiment. The experiment must involve something dealing with cancer, and it must be testable in a lab setting. Remember to include illustrations on how the experiment can be tester. Be sure to include and label your "Observation", "Hypothesis","Experiment", Data & Analyis", & "Conclusion".
a) In your own words, explain the concept of variable scope. Include one or more code...
a) In your own words, explain the concept of variable scope. Include one or more code fragments that you write for this discussion post to help illustrate your case. Clearly mark as appropriate any code fragments as either "script" code or "function" code, and use comments in your code to note the locality of each variable at least the first time the variable appears in the script or function. If a variable is local in scope, be sure to notate...
in 300 hundred words or more, please write, in your own words, about one of the...
in 300 hundred words or more, please write, in your own words, about one of the entities that establish the rules accountants must follow when preparing financial reports. they include, but are not limited to, the Financial Accounting Standards Board (FASB), International Accounting Standards Board (IASB), and the Security Exchange Commission (SEC). please also state your opinion wether the mission of the organization you are writing on helps to provide guidance to aacountants or is repetitive of other standard-making bodies....
Not much more to add. Why pick one over another?
Not much more to add. Why pick one over another?
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT