Question Solved1 Answer JAVA QUESTION - LINKEDLIST Q1. Create class Node with (int id) (String Name) (double GPA) (Node next) as members. Write a tester program to add three students (provide your own details). Link all nodes so they can be accessed using a "head" pointer. Q2. Give an algorithm to find the (node before the last) in a singly linked list. Use the Node class from Q1. Q3. Write a add Middle method in the SList class implementation that traverses to the middle of the List and inserts Node n. Make sure you connect the .next reference to the next node. Q4. Write a findID method that traverses the List for a node containing id of a student. It returns pointer/reference to the Node. Q5. Write a bringToFirst method that traverses the List for a node containing id of a student. It detaches this node from the list and attaches it to the Head of the List.

H8P7M5 The Asker · Computer Science

JAVA QUESTION - LINKED LIST

Transcribed Image Text: Q1. Create class Node with (int id) (String Name) (double GPA) (Node next) as members. Write a tester program to add three students (provide your own details). Link all nodes so they can be accessed using a "head" pointer. Q2. Give an algorithm to find the (node before the last) in a singly linked list. Use the Node class from Q1. Q3. Write a add Middle method in the SList class implementation that traverses to the middle of the List and inserts Node n. Make sure you connect the .next reference to the next node. Q4. Write a findID method that traverses the List for a node containing id of a student. It returns pointer/reference to the Node. Q5. Write a bringToFirst method that traverses the List for a node containing id of a student. It detaches this node from the list and attaches it to the Head of the List.
More
Transcribed Image Text: Q1. Create class Node with (int id) (String Name) (double GPA) (Node next) as members. Write a tester program to add three students (provide your own details). Link all nodes so they can be accessed using a "head" pointer. Q2. Give an algorithm to find the (node before the last) in a singly linked list. Use the Node class from Q1. Q3. Write a add Middle method in the SList class implementation that traverses to the middle of the List and inserts Node n. Make sure you connect the .next reference to the next node. Q4. Write a findID method that traverses the List for a node containing id of a student. It returns pointer/reference to the Node. Q5. Write a bringToFirst method that traverses the List for a node containing id of a student. It detaches this node from the list and attaches it to the Head of the List.
See Answer
Add Answer +20 Points
Community Answer
D9MT5I The First Answerer
See all the answers with 1 Unlock
Get 4 Free Unlocks by registration

Note: A sampleSList class has been created to show the working of themethods.Q1:&#160;Code Screenshots:Node. java:} System.out.println(&quot;GPA: &quot; + GPA);}Sample Output:Node 1ID : 123Name: Name 1GPA: 3.7Node 2ID: 234Name: Name 2GPA: 2.5Node 3ID: 345Name: Name 3GPA: 3.8Code to Copy:&#160;&#160;Node.java:&#160;// Define the class Node.public class Node{&#160;&#160;&#160; // Declare the&#160;&#160;&#160; // required data members.&#160;&#160;&#160; private int id;&#160;&#160;&#160; private String Name;&#160;&#160;&#160; private double GPA;&#160;&#160;&#160;&#160; // Declare next as public&#160;&#160;&#160; // to have easy access to it.&#160;&#160;&#160; public Node next;&#160;&#160;&#160;&#160; // Define the constructor.&#160;&#160;&#160; public Node(int id, String Name, doubleGPA)&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.id = id;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.Name = Name;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.GPA = GPA;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.next = null;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; //&#160;&#160;&#160; // Define the getter methods.&#160;&#160;&#160; //&#160;&#160;&#160;&#160; public int getId()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; return id;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; public String getName()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; return Name;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; public double getGPA()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; return GPA;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // Define the method display().&#160;&#160;&#160; public void display()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Display theinformation of the node.&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println("ID: " + id);&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println("Name: "+ Name);&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println("GPA: " + GPA);&#160;&#160;&#160; }&#160;}&#160;&#160;Main.java (Tester code):&#160;// Define a class to// create the list.class SList{&#160;&#160;&#160; // Declare the member&#160;&#160;&#160; // to keep track of&#160;&#160;&#160; // the start of the list.&#160;&#160;&#160; private Node head;&#160;&#160;&#160;&#160; // Define the constructor.&#160;&#160;&#160; public SList()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; head = null;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // Define a method to&#160;&#160;&#160; // add a node to the list.&#160;&#160;&#160; public void addNode(Node newNode)&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(head == null)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;head = newNode;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Node temp = head;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Run the loop to traverse the list.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while(temp.next != null)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp = temp.next;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Add the newNode at&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// the end of the list.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp.next = newNode;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // Define the method display().&#160;&#160;&#160; public void display()&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; int count = 1;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Node temp = head;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while(temp!=null)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println("Node " + count);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp.display();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp = temp.next;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;count++;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160; }}&#160;// Define the class Main.class Main {&#160;&#160;&#160;&#160; // Define the main() method.&#160;&#160;&#160; public static void main(String[] args)&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Define threenodes.&#160;&#160;&#160;&#160;&#160;&#160;&#160; Node node1 = newNode(123, "Name 1", 3.7);&#160;&#160;&#160;&#160;&#160;&#160;&#160; Node node2 = newNode(234, "Name 2", 2.5);&#160;&#160;&#160;&#160;&#160;&#160;&#160; Node node3 = newNode(345, "Name 3", 3.8);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Define a list.&#160;&#160;&#160;&#160;&#160;&#160;&#160; SList linkList = newSList();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Insert thenodes&#160;&#160;&#160;&#160;&#160;&#160;&#160; // into a list.&#160;&#160;&#160;&#160;&#160;&#160;&#160;linkList.addNode(node1);&#160;&#160;&#160;&#160;&#160;&#160;&#160;linkList.addNode(node2);&#160;&#160;&#160;&#160;&#160;&#160;&#160;linkList.addNode(node3);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Print thelist.&#160;&#160;&#160;&#160;&#160;&#160;&#160;linkList.display();&#160;&#160;&#160;&#160; }}&#160;&#160;Q2.&#160;Algorithm Screenshots:Algorithm to copy:&#160;&#160;&#160;# Define the algorithm.Algorithm findBeforeLast(Node Head):&#160;&#160;&#160;&#160; # Define a temporary&#160;&#160;&#160; # pointer to traverse&#160;&#160;&#160; # the list.&#160;&#160;&#160; Define Node temp = head;&#160;&#160;&#160;&#160;&#160;&#160; # Define the pointer&#160;&#160;&#160; # to store the&#160;&#160;&#160; # required node.&#160;&#160;&#160; Define Node beforeLast =null;&#160;&#160;&#160;&#160; # Run the loop to traverse&#160;&#160;&#160; # the node till the temp&#160;&#160;&#160; # points to the last node of the list.&#160;&#160;&#160; While temp.next != null:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # Update the&#160;&#160;&#160;&#160;&#160;&#160;&#160; # value ofbeforeLast.&#160;&#160;&#160;&#160;&#160;&#160;&#160; SetbeforeLast = temp;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # Move to&#160;&#160;&#160;&#160;&#160;&#160;&#160; # the next node.&#160;&#160;&#160;&#160;&#160;&#160;&#160; Settemp = temp.next;&#160;&#160;&#160;&#160; # Return the beforeLast node.&#160;&#160;&#160; Return beforeLast;&#160;&#160;Note: Since the algorithm traverses the linklist, the running time complexity of the algorithm is O(n), where nis the number of nodes.&#160;&#160;Q3, Q4,Q5:&#160;Note:The code for the methods have been provided inside theSList class, to show their working.It has been assumed that the head pointer is visible tothe methods.The highlighted part represents the code for Q3, Q4 andQ5.&#160;Code Screenshots:Main.java:/ / Run the loop to count//// the number of nodes// in the list.while (temp != null){temp = temp. next;count++;// Find the mid point.int mid = count //2;temp = head;// Traverse the loop to// reach till the mid-point.for(int i=1;i < mid;i++){temp = temp.next}// Insert the node//// in the middle.n. next = temp.next;temp.next =n;}}}}}Node. java:} System.out.println(&quot;GPA: &quot; + GPA);}Sample Output:Node 1:ID: 123Name: Name 1GPA:3.7Node 2 :ID: 345Name: Name 3GPA:3.8Adding Name 4 to the middle of the list...Node 1:ID: 123Name: Name 1GPA: 3.7Node 2:ID: 456Name: Name 4GPA: 2.7Node 3:ID: 345Name: Name 3GPA:3.8Displaying information for ID 456 dotsID: 456Name: Name 4GPA: 2.7Bringing ID 345 to the front...Node 1:ID: 345Name: Name 3GPA:3.8Node 2:ID: 123Name: Name 1GPA: 3.7Node 3:ID: 456Name: Name 4GPA: 2.7Code to Copy:&#160;Main.java:&#160;// Define a class to// create the list.class SList{&#160;&#160;&#160; // Declare the member&#160;&#160;&#160; // to keep track of&#160;&#160;&#160; // the start of the list.&#160;&#160;&#160; private Node head;&#160;&#160;&#160;&#160; // Define the constructor.&#160;&#160;&#160; public SList()&#160;&#160;&#160; {&#160; &#160;&#160;&#160;&#160;&#160;&#160;head = null;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // Define a method to&#160;&#160;&#160; // add a node to the list.&#160;&#160;&#160; public void addNode(Node newNode)&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(head == null)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;head = newNode;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; else&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Node temp = head;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Run the loop to traverse the list.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while(temp.next != null)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp = temp.next;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// Add the newNode at&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// the end of the list.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp.next = newNode;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // Q3.&#160;&#160;&#160; // Define the method addMiddle().&#160;&#160;&#160; public void addMiddle(Node n)&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; int count = 0;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Node temp = head;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Run the loop tocount&#160;&#160;&#160;&#160;&#160; &#160;&#160;// the number ofnodes&#160;&#160;&#160;&#160;&#160;&#160;&#160; // in the list.&#160;&#160;&#160;&#160;&#160;&#160;&#160; while(temp !=null)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160 ... See the full answer