使用C++中的链表实现数学程序

implementation of a math program using Linked Lists in C++

本文关键字:程序 实现 链表 C++ 使用      更新时间:2023-10-16

以下是问题的细节。

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

例如:2101453788将由四个节点表示,第一个节点用零填充,从而产生

002

101

453

788

您的程序需要重载算术运算符+和–

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

示例

如果我们想将10000和845相加,输出结果将是:

答案是

节点1=010

节点2=845

给出10845

我很难理解我将如何: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填充单位数或双位数输入的左侧。我想把整数存储在结构内部的数组中,这样我就可以使用索引来分隔数字,但后来我想我必须做大量的字符串操作才能把整数放入数组中。接下来,我考虑将输入作为字符串,并对字符进行计数,以确定所需的节点数。任何投入都会很有帮助,有时我发现很难退一步看全局。

我认为您需要重新处理您的问题,并提出更精确的查询。

据我所知,您正在寻找一种方法,将长度大于3位的数字划分为子部分,以便能够将它们存储在您的链表中。要做到这一点,将每个数字除以1000,直到股息为0。类似于:

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

在链表中插入rem,即999。

由于股息尚未为0,因此将rem再次除以:

1000)999(0
       0
     ---
     999

现在,被除数是0,所以你可以停止循环,转到下一个整数。希望这能有所帮助!