2014-02-12 7 views
0

리스트를 사용하여 BigInt의 고유 한 구현을 작성하여 큰 정수의 모든 자릿수를 추적하려고합니다. 각 클래스 구현은 별도의 파일에 있습니다.List를 사용하여 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 클래스 자체 내에서 링크드리스트를 관리하거나, 숫자 목록을 관리하기 위해 BigInt 클래스의 구성원 (집합/컴포지션 별)으로 연결된 목록 클래스를 사용할 수 있습니다. BigInt는 또한 크기 (얼마나 많은 십진수가 숫자 에 있는지)와 인쇄 폭 (숫자의 기본값을 기본값으로)을 유지해야합니다. 의 BIGINT 클래스

는 메소드가 생성자 사용할 수에서 BigInt에 임의의 부호 길이 긴 INT 을 (할당 정상 (부호 길이 긴 INT 파라미터)를 구현 및 생성자 (0으로 설정) 기본 복사), 두 개의 BigInt를 추가하는 메소드 결과와 함께 새로운 BigInt를 리턴하는 메소드, 두 개의 BigInt를 곱하는 메소드 결과로 새로운 BigIntT를 리턴하는 메소드, BigInt에 십진수 숫자를 리턴하는 메소드, 대입 = 연산자 , 소멸자.

+0

당신이 클래스 목록에 get_head_pointer() 메소드를 추가 할 수 있습니까? – GVH

+0

아니요, 목적은 목록 요소를 추가/제거/인쇄 (반복기) 할 수있는 간단한 공용 인터페이스가 아닌 목록 구현을 캡슐화하는 것입니다. – user3303411

+0

이것이 숙제라고 생각 하나? 과제에서 숫자를 볼 수없는 두 개의 숫자를 추가해야한다고 생각하는 경우, 그 숫자를 잘못 이해 한 것 같습니다. 교수님이나 우리에게 정확히 BigInt 클래스에서 numList의 내용에 액세스하는 것이 허용되는 방식을 명확히해야합니다. – GVH

답변

0

이중 연결 목록을 구현하는 것이 더 좋은 아이디어 인 http://en.wikipedia.org/wiki/Doubly_linked_list 일 수 있습니다. 두 자릿수를 더하는 것에 대해 생각할 때, 합계가 9보다 크면 휴대해야합니다. 이중 연결리스트는 이것에 정말로 유용 할 것입니다.

과 같을 것이다 클래스 :

클래스 노드 {

INT의 발; 노드 * 다음; * 이전 노드 9

가}

관련 문제