链表中的大负整数表示

时间:2014-06-20 17:59:31

标签: java list data-structures linked-list

我的LinkedList通过在每个节点中包含一个数字来表示大数字。

我可以使用以下代码在LinkedList中表示正大整数:

public BigInteger(int x) 
{
    list = new LinkedList<Integer>();
    while (x > 0) 
    {
        list.push(( x % 10 ));
        x = x / 10;
    }
}

声明:

BigInteger bigPositive = new BigInteger(91234) 

制作:

 [9,1,2,3,4]

但是,我不知道如何表示大的负整数,如-9321312345

4 个答案:

答案 0 :(得分:1)

您可以将1或0推到列表的前面,指示它是正还是负。例如:

  • (15)将映射到[1 1 5]
  • ( - 13)将映射到[0 1 3]
  • (1)将映射到[1 1]

等等。您只需知道将第一个数字解释为符号(+/-),而不是该值的一部分。

答案 1 :(得分:1)

如果BigInteger是您自己的自定义类,您可以添加一个布尔属性来确定整数是正数还是负数。

然后,在构造函数中,您可以确定整数的符号并相应地设置该属性。

答案 2 :(得分:0)

你可以像二进制一样做;通过让最前面的数字确定符号

0b0100 ==  4
0b1100 == -4

同样你可以写

{0, 1, 1} ==  11 
{1, 1, 1} == -11, 

虽然这偏离了最初的想法;既然你正在使用整数,你可以这样做:

{-1, 1} == -11 
{ 1, 1} ==  11

答案 3 :(得分:0)

public BigInteger(int x) int x这个值输入本身就是限制所以你永远不能过去。

为什么不呢?

public BigInteger(int x){
   bigIntValue = x;
}

因为那不是重点。您希望能够从输入中创建大于预期int的值。

更好的选择IMO会添加一个String作为输入,然后有一个操作可以将int's或你想要的东西推到{{1}的后面或前面}}

linklist

如果需要,您甚至可以通过将转换器从char编写为int来将列表类型更改为int。