Big Int的实施 [英] Implementation of Big Int addition

查看:61
本文介绍了Big Int的实施的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮我解决功能编码问题。提前致谢。



please help me out in function coding. Thanks in advance.

#include <iostream>
#include <cstring>
using namespace std;

class ListNode{
    private:
        int data;
        ListNode * next;
    public:
        ListNode(){}
        ListNode(int num){
            data=num;
            next = NULL;
        }
        int getData();
        void setData(int);
        void setNext(ListNode *);
        ListNode* getNext();
};
/*
*Implementation of Node Methods
*/
int ListNode::getData(){
        return data;
}
void ListNode::setData(int x){
        data = x;
}
ListNode * ListNode::getNext(){
        return next;
}
void ListNode::setNext(ListNode * P){
        next = P;
}
/***End Of Node Methods Implementation**/

class List{
    private:
        ListNode * Head;
    public:

        List(){
            Head=NULL;
        }
        ~List(){}
         /*Already Implemented Methods.You can use them in your
                 *functions
                 **/
        ListNode * getHead();
        void setHead(ListNode *);
        ListNode * last();
        void append(int);
        void prepend(int);
        void popBack();
        void print();
        void copy(List);
        void printReverse();    //prints the list from Tail to Head.

        /*Implement the follwing if required. Not mandatory*/

        ListNode * prevNode(ListNode* P);
        void popFront();

};
/*
****List Methods Implementaion***
*/
ListNode * List::getHead(){
        return Head;
}

ListNode * List::last(){
        ListNode * temp=Head;
        if(Head==NULL) return NULL;
        while(temp->getNext()!=NULL){
            temp=temp->getNext();
        }
        return temp;
}
void List::setHead(ListNode * P){
        Head = P;
}
void List::append(int num){
        ListNode * new_node = new ListNode(num);
        ListNode * temp=Head;
        if(temp==NULL){
            Head = new_node;
            return;
        }
        while(temp->getNext()!=NULL) temp=temp->getNext();
        temp->setNext(new_node);
}
void List::prepend(int num){
        ListNode * new_node = new ListNode(num);

        new_node->setNext(Head);
        Head = new_node;
}
/*
*Removes the Tail Node
*/
void List::popBack(){
        ListNode * temp=Head,*prev=NULL;
        //NULL list
        if(Head==NULL){cout<<"List is Empty\n";}
        //single element
        if(Head->getNext()==NULL){
            delete Head;
            Head=NULL;
            return;
        }
        while(temp->getNext()!=NULL){
            prev = temp;
            temp=temp->getNext();
        }
        delete temp;
        prev->setNext(NULL);
}
void List::print(){
        ListNode * temp=Head;
        while(temp!=NULL){
            cout<<temp->getData();
            temp=temp->getNext();
        }
}
//copy values of L into this list
void List::copy(List L){
        Head = NULL;
        ListNode * temp = L.Head;
        while(temp!=NULL){
            this->append(temp->getData());
            temp=temp->getNext();
        }
}

void List::printReverse(){
        ListNode * curr=Head;
        ListNode * prev_last=NULL;

        while(Head!=NULL && prev_last!=Head){
            curr = Head;
            while(curr->getNext()!=prev_last){
                curr = curr->getNext();
            }
            cout<<curr->getData();
            prev_last = curr;
        }
}

/*****End Of List Methods Implementation************************/

/* This is the data type you need to write the required methods*/
class BigInt{
   private:
        List L;
   public:
       BigInt(){}
       ~BigInt(){}
      /*Must write code for append(),prepend(), add(), print() Methods*/
       void append(int num);
       void prepend(int num);
       BigInt add(BigInt A);
       void print();//mandatory

       /*Helper Functions, not mandatory to implement
       *Hint: Implement removeZeroes(), call it in print().
       */
       void removeZeroes();
       void copy(BigInt B);

};



void populate(BigInt &A, char * str){
   //CODE
}
void BigInt::append(int num){
  //CODE
}
void BigInt::prepend(int num){
   //CODE
}

BigInt BigInt::add(BigInt A){
     //CODE
}

void BigInt::removeZeroes(){
     /**write your code here
      *Hint: Implement removeZeroes(), call it in print().
      */
}
void BigInt::print(){
    //CODE
}

int main(){

      char str[40];
      BigInt A,B;
      cin>>str;
      populate(A,str);

      cin>>str;
      populate(B,str);

      (A.add(B)).print();

      return 0;
}

推荐答案

我们不做你的功课;这是有原因的。



亲自尝试,它可能比你想象的要容易!
We don't do your homework; it is set for a reason.

Try it yourself, it may be easier than you think!


这篇关于Big Int的实施的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆