使用列表来表示BigInt

时间:2014-02-12 20:42:55

标签: c++ class integer bigint

我正在尝试使用列表编写我自己的BigInt实现来跟踪大整数中的所有数字。每个类实现都在一个单独的文件中。

struct node
{
    int value;
    node *next;
};


class LIST
{
    private:
        node *head;
    public:
    . . . 
};


class BigInt
{
    Private:
        LIST numList;
    Public:
        BigInt addNum(BigInt& b);
        . . .
};

如何为BigInt类实现addNum方法?我知道如何在给定头指针的情况下将数据添加到两个列表中,但是在我的BigInt类中,我无法访问列表类的头指针,所以我该怎么做呢?任何提示都将不胜感激。

转让说明:

创建基于链表的任意精度无符号整数类BigInt。您 可以用简单的方式创建链表,而不用打扰载体元素 例如,只需创建一个包含数字和下一个指针的结构。你可以管理 BigInt类本身内的链表,或者您也可以使用链表 class作为BigInt类的成员(通过聚合/组合)来管理 数字列表。 BigInt还需要保持大小(多少位十进制数字) 数字)和打印宽度(默认为数字的大小)。

对于BigInt类,实现normal(unsigned long long int参数),copy 和default(设置为0)构造函数,一种分配任意unsigned long long int的方法 到BigInt(构造函数可能使用),一个添加两个BigInt的方法 返回一个带有结果的新BigInt,一个乘以两个BigInts的方法 返回一个带有结果的新BigIntT,一个返回十进制数的方法 BigInt中的数字,赋值=运算符和析构函数。

1 个答案:

答案 0 :(得分:0)

实施双向链表可能是一个更好的主意http://en.wikipedia.org/wiki/Doubly_linked_list。当您考虑添加两位数时,如果总和大于9,则需要携带。双重链表对此非常有用。

你的课程看起来像这样:

class Node {

int val;    节点*下一个;    节点*上一个; 9

}