1

在我的课堂上,我有一项任务是创建一个 Number 类,该类具有算术运算。(加/减/乘/等)

我对其中一个部分感到困惑——双向链表。规范中唯一讨论它的部分我觉得有点混乱。我不知道我应该存储什么 - 输入的所有数字?它表示高位数字节点的高点......我不知道那是什么意思。另外,我不确定我将如何实现双向链表......只是参考下一个“高位数字”?

还 - 什么是Node?作业只说我要创建class Number...但是 Java API 中的节点说它与 HTML 标签有关?我不应该使用Number low, high???

以下是详细说明双向链表部分的规范部分:

数字将存储在双向链表中(此处不要使用泛型)。每个节点都有一个 int 值字段,该字段将保存一个数字(0 到 9)和两个指针字段 prev 和 next。

The Number class will have five fields: 

private Node low, high;
private int digitCount = 0;
private int decimalPlaces = 0;
private boolean negative = false;

high 指向高位数字的节点,low 指向低位数字的节点,digitCount 是存储在列表中的位数,decimalPlaces 是小数位后的位数(节点),负号表示符号。

我不是要求一个确切的解决方案,只是一些指导和理解。我真的很感激给予的任何帮助。

4

2 回答 2

1

在这种情况下,节点是链表的一个元素。

似乎您应该将数字表示为链表,其中每个节点包含一个数字。

所以数

12.34

其中将有 4 个节点,分别对应 1、2、3 和 4。您的 Number 的 digitCount 为 2,decimalPlaces 为 2,因为小数点前后各有 2 位。

您的链接列表应如下所示

1 <-> 2 <-> 3 <-> 4

where<->表示链表的双重链接性质(前一个节点和下一个节点的指针。)如果列表应该是循环的,则可能也应该有来自 1 <-> 4 的指针。

你的 Number 类的大纲看起来像

public class MyNumber {
   DigitNode low;
   DigitNode high;
   int digitCount;
   int decimalPlaces;
   bool negative;
}

你的 DigitNode 类大纲看起来像

public class DigitNode {
   int digit;
   DigitNode next;
   DigitNode prev;
}

我忽略了诸如私有/受保护之类的东西以及诸如设置者/获取者之类的东西。您现在可以通过获取low属性、获取其“下一个”属性并循环直到next为空来执行类似迭代数字的操作。

于 2011-09-16T16:35:12.420 回答
1

根据您的规范中的以下文本,看起来数字是一个节点:

...the number of digits (nodes) after the...

在这种情况下,高位似乎意味着 10 的下一个幂,因此是下一个较大的数字,而低位似乎是相反的,因此是下一个最小的数字。

于 2011-09-16T16:35:25.280 回答