2015-06-28 1431 views
-2

以下是问题的具体细节。在C++中使用链接列表实现数学程序

创建一个将整数存储在链表节点中的算术程序。每个节点将存储一个三位整数,后续节点将保存大于四位数的部分数字。

例如:2101453788将由四个节点来表示,所述第一被留用零填充,导致

你程序将需要超载算术运算符+和 -

输入到程序的每个数字都应有自己的链表,并将算术结果存储在结果链表中。算术运算的最终结果应输出到控制台,每个数字部分都列出其节点位置。

如果我们想添加10,000和845的输出结果将是:

答案是

节点1 = 010

节点2 = 845

给予10,845

我有一个很难时间了解我将如何: a。用0的 b填充左侧。限制整数的大小为3位

我想你可以称这个作家块,我只是无法描绘该程序,我正在寻找一些在正确的方向轻轻推动。

我到目前为止: a。创建一个主类,以整数 b的形式要求用户输入。创建一个结构来充当我的ListNode

#ifndef LISTNODE_H 
#define LISTNODE_H 

#include "stdafx.h" 

struct ListNode 
{ 
    //the integer data for the node 
    int data; 

    //Pointers 
    ListNode* nextPtr; 
    ListNode* prevPtr; 


    //Constructor 
    ListNode(const int& the_data, ListNode* next_node_ptr = NULL, ListNode* prev_node_ptr = NULL) 
    { 
    data = the_data; 
    nextPtr = next_node_ptr; 
    prevPtr = prev_node_ptr; 
    } 
}; 
#endif 

我无法弄清楚是如何修改我的结构要坚持3位参数和垫左侧的单或双输入数字与0。 我想将整数存储在结构体内的数组中,以便我可以使用索引来分隔数字,但后来我认为必须进行大量的字符串操作才能将整数存入数组中。我接下来想到将输入作为一个字符串并计算字符以确定所需节点的数量。 任何输入都会有帮助,有时我觉得很难退后一步,看看大局。

+1

那么你自己说过:创建一个算术程序,在链表节点中存储“整数”。你不能将一个整数存储为001,它只是1,但不会改变任何东西,因为它仍然是以字节为单位的东西。你看到我从哪里来?如果值大于“999”(基本上是4位数),如果大于“999 999”,则不需要移动任何东西,只要确保将其分开即可。 –

回答

0

我认为你需要对你的问题进行修改,并提出一个更精确的查询。

据我所知,你正在寻找一种方法来将长度> 3位的数字分成子部分,以便能够将它们存储在链表中。要做到这一点,请划分每个号码。到1000,直到股息为0。例如:

1000)999999(999 
    999000 
    ------ 
    000999 

将rem,即999插入链表。

由于分红还不0,如再次划分REM:

1000)999(0 
     0 
    --- 
    999 

现在,分红为0,所以你可以停止你的循环,进入到下一个整数。希望这可以帮助!