C语言 将 2 个数字相乘,由 2 个数字链表表示



我需要一些关于家庭作业的想法。请考虑以下定义:

typedef struct listNode {
    int* dataPtr;
    struct listNode* next;
} ListNode;
typedef struct list {
    ListNode* head;
    ListNode* tail;
} List;

每个列表节点表示一位数。每个数字都由一个列表表示,但方式相反:数字的最后一位是列表的第一个列表节点,数字的第一个数字是列表的最后一个列表节点。

我已经编写了函数

void addNumbers(List n1, List n2, List *sum);

这将返回一个新列表,其中包含其他两个列表的总和。

现在我必须编写乘法函数:

void multNumbers(List n1, List n2 , List* prod);

而且我有点纠结于如何实现它。这不是关于代码,而是关于如何做到这一点。不用说,我们不允许将数字转换为整数,乘以并将结果转换为列表。

任何帮助将不胜感激。

谢谢。

这将是代码重用的一个很好的练习。既然您已经创建了一个将两个链表数字相加的函数,您是否可以利用该函数来执行(部分)乘法?毕竟,乘法可以通过重复将第一个数字乘以第二个数字中的一个数字,然后将所有结果相加来手动执行。尝试以下操作:

  • 创建一个将包含结果的链表编号,并将其设置为零
  • 循环遍历第二个数字的数字
    • 对于每个数字,将第一个数字乘以该数字(你应该写一个单独的函数来做到这一点;如果你设法写了加法函数,这应该不会太难)
    • 在结果末尾附加零,以便数字向左移动足够远
    • 使用addNumbers()将数字添加到结果中

相关内容

  • 没有找到相关文章

最新更新