. Advertisement .
..3..
. Advertisement .
..4..
How to assign negativecntr with the number of negative values in the linked list, including the list head.? Below is my code
// ===== Code from file IntNode.java =====
public class IntNode {
private int dataVal;
private IntNode nextNodePtr;
public IntNode(int dataInit, IntNode nextLoc) {
this.dataVal = dataInit;
this.nextNodePtr = nextLoc;
}
public IntNode(int dataInit) {
this.dataVal = dataInit;
this.nextNodePtr = null;
}
/* Insert node after this node.
* Before: this -- next
* After: this -- node -- next
*/
public void insertAfter(IntNode nodePtr) {
IntNode tmpNext;
tmpNext = this.nextNodePtr; // Remember next
this.nextNodePtr = nodePtr; // this -- node -- ?
nodePtr.nextNodePtr = tmpNext; // this -- node -- next
return;
}
// Grab location pointed by nextNodePtr
public IntNode getNext() {
return this.nextNodePtr;
}
public int getDataVal() {
return this.dataVal;
}
}
// ===== end =====
// ===== Code from file CustomLinkedList.java =====
import java.util.Random;
public class CustomLinkedList {
public static void main (String [] args) {
Random randGen = new Random();
IntNode headObj; // Create intNode objects
IntNode currObj;
IntNode lastObj;
int i = 0; // Loop index
int negativeCntr = 0;
headObj = new IntNode(-1); // Front of nodes list
lastObj = headObj;
for (i = 0; i < 10; ++i) { // Append 10 rand nums
int rand = randGen.nextInt(21) - 10;
currObj = new IntNode(rand);
lastObj.insertAfter(currObj); // Append curr
lastObj = currObj; // Curr is the new last item
}
currObj = headObj; // Print the list
while (currObj != null) {
System.out.print(currObj.getDataVal() + ", ");
currObj = currObj.getNext();
}
System.out.println("");
currObj = headObj; // Count number of negative numbers
while (currObj != null) {
/* Your solution goes here */
currObj = currObj.getNext();
}
System.out.println("Number of negatives: " + negativeCntr);
return;
}
}
// ===== end =====
Give me a few effective suggestions.
You must use the GetDataVal() function to get the attached value to the currObj. The while loop used above it goes through each node to see if the memory location has a value. If the location has a value then the value itself is checked and if the value is less than 0, negativeCntr = negativeCntr + 1.
This should be done using
if(currObj->GetDataVal() < 0){ negativeCntr++; }
.