将表示为链表的两个数字乘以 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;

}

void multiplyTwoLinkedLists(struct Node* firstHead, struct Node* secondHead, struct Node** newLinkedListHead) {

   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;

      }

   }

   int result = _1 * _2;

   while (result) {

      addNewNode(newLinkedListHead, result % 10);

      result /= 10;

   }

}

void printLinkedList(struct Node *node) {

   while(node != NULL) {

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

      node = node->next;

   }

   cout << "NULL" &l<t; 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);

   struct Node* newLinkedListHead = NULL;

   multiplyTwoLinkedLists(firstHead, secondHead, &newLinkedListHead);

   printLinkedList(newLinkedListHead);

   return 0;

}

输出结果

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

3->2->1->NULL

2->1->NULL

6->7->4->1->NULL

结论

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

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

回到顶部