2014-02-12 3 views
0

Я пытаюсь написать свою собственную реализацию BigInt, используя списки, чтобы отслеживать все цифры в большом целые числа. Каждая реализация класса находится в отдельном файле.Использование списков для представления BigInt

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


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


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

Как реализовать метод addNum для класса BigInt? Я знаю, как добавить данные в два списка с помощью указателя на голову, но в моем классе BigInt я не могу получить доступ к указателю на вершине класса списка, так как я могу это сделать? Любой совет будет оценен.

Инструкция по заданию:

Создать связанный список на основе произвольной точности целого без знака класса BigInt. Вы, , можете создать связанный список простым способом, не беспокоясь о несущих в списке , например, просто создайте структуру, содержащую цифру и следующий указатель. Вы можете управлять связанным списком в самом классе BigInt, или, альтернативно, вы можете использовать связанный список класса в качестве члена (по агрегации/составлению) класса BigInt для управления списком цифр . BigInt также необходимо сохранить размер (сколько десятичных цифр находится в номер) и ширину печати (по умолчанию - размер номера).

Для класса BigInt, осуществлять нормальный (без знака длинного длинного параметра INT), скопируйте и по умолчанию (устанавливается на 0) конструкторы, способ присвоить произвольный беззнаковый длинный длинный Int к BigInt (который конструкторы могут использовать), метод добавления двух BigInts , возвращающих новый BigInt с результатом, метод для умножения двух BigInts , возвращающих новый BigIntT с результатом, метод возврата числа десятичных цифр в BigInt, оператор присваивания = , и деструктор.

+0

Вы можете добавить метод get_head_pointer() для класса LIST? – GVH

+0

Нет, цель состоит в том, чтобы инкапсулировать реализацию списка, отличную от простого общедоступного интерфейса, который позволяет добавлять/удалять/печатать (итератор) элементы списка. – user3303411

+0

Я предполагаю, что это домашнее задание? Если вы считаете, что задание требует, чтобы вы добавили два номера, не имея возможности смотреть на цифры, я боюсь, вы неправильно поняли это. Вы должны уточнить, как с вашим профессором, так и с нами, каким именно образом вам разрешено получать доступ к содержимому numList из класса BigInt. – GVH

ответ

0

Реализация двусвязного списка может быть еще лучшей идеей http://en.wikipedia.org/wiki/Doubly_linked_list. Когда вы думаете о добавлении двух цифр, если сумма больше 9, вам нужно нести. Для этого было бы полезно использовать двойной список.

Ваш класс будет выглядеть следующим образом:

класс Node {

INT вал; Узел * next; Node * предыдущий; 9

}

Смежные вопросы