Multiply a single digit number in place to a number represented as a Linked List

#include using namespace std;  class Node {public:    int data;    Node* next;};  Node* newNode(int data){        Node* new_node = new Node;          new_node->data = data;    new_node->next = NULL;          return new_node;}  Node* reverse(Node* head){    Node* prev = NULL;    Node* current = head;    Node* next;          while (current != NULL) {        next = current->next;        current->next = prev;        prev = current;        current = next;    }              return prev;}  Node* multiplyHelp(Node* head, int M){        Node* res = head;          Node* prev = NULL;          int carry = 0, product = 1;      while (head != NULL) {                  product = head->data * M;                  product += carry;                  carry = product / 10;                  head->data = product % 10;                  prev = head;        head = head->next;    }              if (carry > 0)        prev->next = newNode(carry);          return res;}  Node* multiply(Node* head, int M){        head = reverse(head);          head = multiplyHelp(head, M);          return reverse(head);}  void printList(Node* node){    while (node != NULL) {        cout data;        node = node->next;    }}  int main(){        Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(7);    head->next->next->next = newNode(3);    int M = 3;          head = multiply(head, M);          printList(head);      return 0;}