public void deleteAtFront() {
   if (header != null && header.getNext() != null) {
     header = header.getNext();
     // header has null data but some reference point. The get symbol '=' changes the reference
     // point. header.getNext() returns the second node in the list
   }
 }
 public void pop() // For stacks, where a node at the end of the list is deleted
     {
   if (header.getNext() == null) // if there is not second node AKA one node in the list
   {
     header = null; // header points to nothing
   } else if (header.getNext()
       != null) // If there is a second node AKA more than two nodes in the list
   {
     header = header.getNext(); // header points to the second node in the list.
   }
 }
 public int sumOfStock(IngredientNode n) {
   if (n == null) {
     return 0;
   } else {
     return n.getIngredient().getStock() + sumOfStock(n.getNext());
   }
 }
 public void push(
     Ingredient a) // For stacks, where a node of data a is inserted at the end of the list
     {
   if (header == null) {
     header = new IngredientNode(a, null); // header points to the new node
   } else {
     IngredientNode current = header;
     while (current.getNext() != null) // second node doesn't equal to null
     {
       current =
           current
               .getNext(); // second node gets third node...third node gets fourth node...until the
       // LAST NODE (current.getNext() == null)
     }
     current.setNext(new IngredientNode(a, null)); // Set reference for last node to the new node
   }
 }
 public String printData() {
   IngredientNode current = header;
   String s = "";
   while (current != null) {
     s = s + "\n" + current.getIngredient();
     current = current.getNext();
   }
   return s;
 }
  public void delete(Ingredient n) {
    IngredientNode current = header;
    IngredientNode previous = null;

    while (current != null) {
      if (current.ingredient.equals(n)) {
        if (previous == null) // This means that the first node is the target node
        {
          header = header.getNext();
          previous = current;
        } else {
          previous.setNext(current.getNext());
          current = null;
        }
      } else {
        previous = current;
        current = current.next;
      }
    }
  }