3

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

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);

而且我有点坚持如何实施它。这不是关于代码,而是关于如何去做。不用说,我们不允许将数字转换为整数、乘以将结果转换为列表。

任何帮助将不胜感激。

谢谢。

4

1 回答 1

1

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

  • 创建一个包含结果的链表编号,并将其设置为零
  • 循环遍历第二个数字的数字
    • 对于每个数字,将第一个数字乘以该数字(您应该编写一个单独的函数来执行此操作;如果您设法编写了加法函数,这应该不会太难)
    • 将零附加到结果的末尾,以便数字向左移动足够远
    • 将数字添加到结果中,使用addNumbers()
于 2012-04-15T22:40:25.733 回答