将 C++ 中链表表示的两个数字相乘

在本教程中,我们将编写一个程序,将两个表示为链表的数字相乘。

让我们看看解决问题的步骤。

  • 初始化两个链表。

  • 遍历两个链表并生成两个数字。

  • 将结果数字相乘。

  • 返回两个数字的乘积。

示例

让我们看看代码。

#include <bits/stdc++.h>

using namespace std;

struct Node {

   int data;

   struct Node* next;

};

void addNewNode(struct Node** head, int new_data) {

   struct Node* newNode = new Node;

   newNode->data = new_data;

   newNode->next = *head;

   *head = newNode;

}

long multiplyTwoLinkedLists(struct Node* firstHead, struct Node* secondHead) {

   int _1 = 0, _2 = 0;

   while (firstHead || secondHead) {

      if (firstHead) {

         _1 = _1 * 10 + firstHead->data;

         firstHead = firstHead->next;

      }

      if (secondHead) {

         _2 = _2 * 10 + secondHead->data;

         secondHead = secondHead->next;

      }

   }

   return _1 * _2;

}

void printLinkedList(struct Node *node) {

   while(node != NULL) {

      cout << node->data << "->";

      node = node->next;

   }

   cout << "NULL" << endl;

}

int main(void) {

   struct Node* firstHead = NULL;

   struct Node* secondHead = NULL;

   addNewNode(&firstHead, 1);

   addNewNode(&firstHead, 2);

   addNewNode(&firstHead, 3);

   printLinkedList(firstHead);

   addNewNode(&secondHead, 1);

   addNewNode(&secondHead, 2);

   printLinkedList(secondHead);

   cout << multiplyTwoLinkedLists(firstHead, secondHead) << endl;

   return 0;

}

输出结果

如果你运行上面的代码,那么你会得到下面的结果。

6741

结论

如果您对本教程有任何疑问,请在评论部分提及。

以上是 将 C++ 中链表表示的两个数字相乘 的全部内容, 来源链接: utcz.com/z/345789.html

回到顶部