将表示为链表的两个数字乘以 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->NULL2->1->NULL
6->7->4->1->NULL
结论
如果您对本教程有任何疑问,请在评论部分提及。
以上是 将表示为链表的两个数字乘以 C++ 中的第三个列表 的全部内容, 来源链接: utcz.com/z/327511.html