乘以2个数字,由2个数字链表组成

时间:2012-04-15 22:31:43

标签: c linked-list singly-linked-list

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

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

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

任何帮助都将受到高度赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

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

  • 创建一个包含结果的链接列表编号,并将其设置为零
  • 循环显示第二个数字的数字
    • 对于每个数字,将第一个数字乘以该数字(您应该编写一个单独的函数来执行此操作;如果您设法编写了添加函数,这不应该太难)。
    • 将零附加到结果的末尾,以便数字移动到足够远的左侧
    • 使用addNumbers()
    • 将数字添加到结果中