двойная путаница в списке - PullRequest
       48

двойная путаница в списке

2 голосов
/ 16 сентября 2011

В моем классе у меня есть задание для создания класса Number, в котором есть операции для арифметики.(Добавить / вычесть / умножить / и т. Д.)

Есть одна часть, которая меня смущает - списки с двойной связью.Единственная часть спецификации, которая обсуждает это, я нахожу немного запутанным.Я не знаю, что я должен хранить - все числа введены?Это говорит о высоких точках к узлу старшего разряда ... Я не знаю, что это значит.Кроме того, я не уверен, как именно я реализовал бы двусвязный список ... просто есть ссылка на следующую «старшую цифру»?

ТАКЖЕ - Что такое Node?Назначение только говорит, что я должен создать class Number ... но Node в 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;

верхние точки указывают на узел старшей цифры, нижние - наузел цифры младшего разряда, digitCount - это количество цифр, хранящихся в списке, decimalPlaces - количество цифр (узлов) после десятичного знака, а знак минус дает знак.

Я не спрашиваюточное решение, только некоторые указания и понимание.Я действительно ценю любую помощь.

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Похоже, цифра - это узел, основанный на этом тексте из вашей спецификации:

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

Высокий порядок в данном контексте, по-видимому, означает следующую степень 10, поэтому следующая большая цифра и младший - противоположность, поэтому следующая младшая цифра.

1 голос
/ 16 сентября 2011

Узел в этом контексте является элементом вашего связанного списка.

Похоже, вы должны представлять число в виде связанного списка, где каждый узел содержит одну цифру.

Так что число

12,34

будет иметь 4 узла, по одному для каждого из 1, 2, 3 и 4. Ваш номер будет иметь digitCount, равный 2, и decimalPlaces, равные 2, поскольку перед десятичной запятой и после нее есть 2 цифры.

Ваш связанный список должен выглядеть как

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

где <-> представляет двусвязную природу связанного списка (указатели как для предыдущего, так и для следующего узла.) Вероятно, должны быть указатели и от 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 и зацикливаясь до тех пор, пока next не станет нулевым.

...