In: Computer Science
In this assignment you are to utilize the Node data
structure provided on Blackboard.
In this assignment you are to write a main program that implements
two methods and a main
method as their driver. So, only main and two methods with it.
Implementation Details:
Method 1:
^^^^^^^^^
Parameters and return type:
Takes as parameters an array of integers, the size of the array of
integer (.length is acceptable also)
and it should return a Node that is supposed to represent the head
of a linked list.
Note: You may also choose to make it a void method and
pass the head of the linked list as a parameter,
if that's easier for you. You have the choice here.
Method Logic:
The method is supposed to create a linked list represented by its
head and populate it with the
numbers stored in the array by placing the even numbers in the
array first, followed by the odd
numbers. You may not change the order of the numbers inside of the
array, the order must remain
the same as it was read from input.
Example: Assume the array is: [0,1, 4, 6, 7, 9, 2, 10, 11, 14, 13, 19, 20]
The linked list should be 20->14->10->2->6->4->0->1->7->9->11-13->19
So return back from the function the head of this
linked list.
Method 2:
^^^^^^^^^
Parameters and return type:
This method should take as a parameter the linked list generated in
method 1 represented by
its head.
Method logic:
The method should start by reading in one integer from standard
input, and based on that
integer, it needs to shift the linked list by that many positions.
Keep in mind that you need
to do the necessary error checking, the shifting can be between 0
and the size of the linked list - 1.
Example:
Assume the given linked list is:
20->14->10->2->6->4->0->1->7->9->11-13->19
You read in an integer: You input the number 3.
The linked list should look like:
2->6->4->0->1->7->9->11-13->19->20->14->10
If you read in a 6:
The linked list should look like:
0->1->7->9->11-13->19->20->14->10->2->6->4
If you read in a 13 The method should print an error
asking you to enter a number between 0-12.
The main program:
^^^^^^^^^^^^^^^^^
1. Your program should run and ask the user to input the size of an
array of integers. Once that's
done, the program should read these integers and store them into an
array.
2. Once the array has been populated and its size is
known, then you need to call method 1 defined
above. The result should be a head pointer of a linked list.
At this point you declare a cursor method and go through the linked
list and print it to the screen.
Based on the above example: 20 14 10 2 6 4 0 1 7 9 11 13 19.
3. Call method 2
4. Print the linked list resulting from calling method 2. The rotated linked list.
- method 1 hints
The following should happen after reading an array a of size n Keep
in mind that this is closer to pseudocode, so you need to fix it to
compile, it's pretty close to what you need to do, but you need to
adjust the code to work with the Node data structure. I am talking
about private vs. public data members and the use of getters and
setters.
Also the following is assuming a dummy node.
Node head = new Node(); Node cursor = head;
for(i = 0; i < n; i++ ) {
int x = a[i]; // this is the number we're working with.
if(x % 2 == 0) // the number is even.
{
// this will insert the even numbers in the reverse order of how
they are in the array.
head.next = new Node(x, head.next);
}else{
cursor.next = new Node(x, null);
cursor = cursor.next
}
}
return head; // this will return the entire list represented by its
head
- Method 2 hints
public static void rotateList(Node head){
// read in the number n to rotate by
// then do the rotation code by manipulating the head and where
it's
// pointing and where the new end of the list is
now.
}
// therefore we need to create our first node first, and have the // head and the cursor both point to it. // After that i will not be equal to zero and we can then start executing // the else part of this if statement by checking if the number is odd // or even. if( i == 0){ head = new Node<Integer>(a[i], null); // insert the code that makes the cursor point to the head cursor = head; } else { if(a[i] % 2 == 1){ // if the number is odd cursor.setNext(new Node<Integer>(a[i], null)); // Insert the code that moves the cursor over. cursor = cursor.getNext(); }else{ // the number is even, so we will insert at the head and move the head // to point to the newly inserted node. // Use a code that is highly similar to the listHeadInsert // method in the linked list class. Do not call the listHeadInsert // method though, but you can use its logic head = new Node<Integer>(a[i], head); } } } return head; } public static Node<Integer> shiftList(Node<Integer> head) { // in this code you will need to have some temporary variables starting // Ask the user to enter a number by which to shift // make the necessary error checking to make sure that the shift is valid // call this number x. Scanner in = new Scanner(System.in); int x = in.nextInt(); int i; Node<Integer> tmp = head; Node<Integer> cursor = head; // now you moved tmp to the location where head needs to be for(i = 0; i < x - 1; i++) { tmp = tmp.getNext(); if(tmp == null) { System.out.println("Invalid Shift entered."); return head; } } // at this point find the end of the list while(cursor.getNext() != null) cursor = cursor.getNext(); // make the last node point to the old head cursor.setNext(head); // Now write the code that moves the head over and set the Next of the node // before the new location of the head to null. head = tmp.getNext(); tmp.setNext(null); return head; } } class Node<T> { private T value; // this is the data value private Node<T> next; // this is pointing to the next node // the node constructor public Node (T v, Node<T> n) { value = v; next = n; } // getters and setters for the node's value and next pointer public T getValue() {return value;} public Node<T> getNext() {return next;} public void setValue(T v){value = v;} public void setNext(Node<T> n){next = n;} }
note: plzzz don't give dislike.....plzzz comment if you have any problem i will try to solve your problem.....plzzz give thumbs up i am in need....