繁体   English   中英

如何将“长”数字表示为链表中的节点 [JAVA]

[英]How to represent a 'long' number as nodes in a linked-list [JAVA]

我有一个务实的任务要解决:

我们可以存储在 memory 单元中的 Int 和 Long 数字的大小是有限的。 解决问题的一种方法是建立一个链表,其中链表中的每个节点都将包含数字中的一个数字,这样数字本身就不会被保留为数字,而是作为其数字的集合-一个接一个地。

我必须创建一个构造函数,它获取一个“长”类型的数字并将其以链表的格式存储。

我的意思是,如果我们采用数字 233,674,318,构造函数将创建该数字的表示形式,如下所示:2 -> 3 -> 3 -> 6 -> 7 -> 4 -> 3 -> 1 -> 8

你能建议我如何解决这个问题吗?

先感谢您!

您可以使用模运算符提取数字的最低有效数字(右侧的数字)。 在这种情况下, 233,674,318 % 10将产生 8( %表示模数)。 您可以使用除法去除数字的最低有效位。 233,674,318 / 10将产生 23,367,431,这就像从数字中删除 8。 使用这两个操作,您可以从一个数字中提取所有数字并从中构建一个列表。

转换为字符串并取每个字符来创建节点

import java.util.*;
import java.util.stream.*

         LinkedList<Integer> getList(long num){
             String[] arr = String.valueOf(num).split("");
             LinkedList<Integer> list = new LinkedList<>();
             list.addAll(Stream.of(arr)
                     .mapToInt(x->Integer.parseInt(x))
                     .boxed()
                     .collect(Collectors.toList()));
             return list;
         }

这是您可以使用的方法。 最终,要么使用模数来获取每个数字,要么使用拆分 function 对长数的字符串值进行解析并存储在整数的 LinkedList 中。

如果您尝试保存 memory,根据您的问题,对链表使用整数会更好,因为整数仅使用 32 位,而 long 使用 64 位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM