Search code examples
javalinked-listnegative-number

Assign the negativeCntr with the number of negative values in the linked list


I am having issues assigning a negative counter (negativeCnter) with the number of negative values in the linked list.

I am honestly just not sure how to go about the whole thing.

I need the output to read

Number of negatives: 6 (or whatever that may be) instead of my current Number of negatives: 0

Thank you.

// ===== 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 =====

Solution

  • The solution is,

    negativeCntr++;