Add 1 to a number represented as a linked list

June 23, 2022 · 1 min read

https://practice.geeksforgeeks.org/problems/add-1-to-a-number-represented-as-linked-list/1

class Solution {
  Node* reverseLL(Node* head) {
    Node* prev = nullptr;
    Node* current = head;
    Node* next;

    while (current != nullptr) {
      next = current->next;
      current->next = prev;
      prev = current;
      current = next;
    }

    return prev;
  }

  Node *addOneUtil(Node* head) {
    Node* curr = head;
    Node* tmp = nullptr;

    int carry = 1, sum = 0;

    while (curr != nullptr) {
      sum = carry + curr->data;
      carry = (sum >= 10) ? 1 : 0;

      sum = sum % 10;
      curr->data = sum;

      tmp = curr;
      curr = curr->next;
    }

    if (carry > 0)
      tmp->next = new Node(carry);

    return head;
  }

public:
  Node *addOne(Node *head) {
    head = reverseLL(head);

    head = addOneUtil(head);

    return reverseLL(head);
  }
};
Move the last element to front in a linked list
Add two numbers represented by linked lists