2013-11-20 3 views
2

Я должен создать метод для устранения номера в кольцевом связанный списке говорит, что мы имеем значение до 9
Java Круговые Связанный список

1 2 3 4 5 6 7 8 9 

, и мы хотим, чтобы постоянно удалять все 4-е числа, проходящее через, это будет идти как следует

5 6 7 8 9 1 2 3; // 4 is removed 
9 1 2 3 5 6 7; // 8 is removed 
5 6 7 9 1 2;  // 3 is removed 
1 2 5 6 7;  // 9 is removed 
7 1 2 5;   // 6 is removed 
7 1 2;   // 5 is removed 
1 2;    // 7 is removed 
1;    // 2 is removed 

Я должен создать движение, чтобы пройти через элементы, и устранить, чтобы удалить элемент, но я могу сделать это самостоятельно. У меня проблема с моим toString(); метод, я в настоящее время не возвращаю никакой ценности.

class Digit{ 

    class DigitNode 
    { 
      public int num=0;   // Digit's position in line 
      public DigitNode next=null; // Reference to next digit 
      /** 
      * Digit constructor, initializes number 
      */ 
      public DigitNode(int number) 
      { 
        // 
       num = number; 
       next = null; 
      } 
    } 

    private int number; 
    private DightNode current = null; // Linked list of digits 
    private DigitNode tail = null; // Tracks end of list as it is constructed 

    /** 
    * constructs a circular linked list of 
    * @param n DigitNodes, current is the first DigitNode and tail is the last DigitNode(next of tail is current) 
    */ 

    public Digit(int n) 
    { 
     // 
     number = n; 
     current = null; 
     tail = null; 
    } 

    /* 
    * prints all Digits starting from current until tail 
    */ 
    @Override 
    public String toString() 
    { 
    // 
     String strVal = ""; 
     DigitNode position = current; 
     while (position != null) { 
      strVal = strVal + position + " "; 
      position = current.next; 
     } 
     return strVal; 
    } 

Для меня, я понимаю, что я задаю позиции в качестве текущего значения, которое должно быть 1, таким образом, в то время как позиция не null, strVal быть позиция [1] + " " для интервала. тогда я называю положение следующим значением, которое равно [2], и я продолжаю до null, который после 9. Таким образом, strVal должен быть 1 2 3 4 5 6 7 8 9. Но я ничего не возвращаю, к сожалению, я пробовал отлаживать и помещал некоторые маркеры System.out.prinln();, чтобы увидеть, возвращаю ли я что-нибудь, но я не был.

+1

вам нужно иметь метод ToString в вашем DigitNode : public String toString {return "" + number; } – kiruwka

+0

Я сделал это, но все равно получаю тот же результат. могу ли я спросить @kiruwka, что делает реализация метода toString() во внутреннем классе DigitNode? – user3011391

+0

смотрите мой ответ. Вы фактически добавляли в свой список любые Узлы и обновляли 'current' перед печатью? – kiruwka

ответ

1

Прежде всего, вы должны заполнить ваши Digit объектами DigitNode. Я не вижу код, который делает это из моментального снимка, который вы опубликовали.
Предположительно, вы можете сделать это в конструкторе Digit или создать способ Digit .add (DigitNode узел). Вам это нужно, иначе ваш current всегда будет null.


Далее вам нужно добавить ToString в DigitNode, как я уже говорил ранее в комментарии, или вы могли бы изменить Digit .ToString(), чтобы иметь:

strVal = strVal + position.num + " "; // note position.num to get the number 
0

У вас нет ToString() в DigitNode так, когда вы звоните

strVal = strVal + position + " "; 

вы просто добавляя к strVal любой метод по умолчанию ToString() для позиции, которая является DigitNode. Это связано с тем, что добавление объекта в String с '+' вызывает его toString(), чтобы получить что-то, добавляемое к String (в данном случае strVal).

+0

Спасибо, это ответили на мой предыдущий комментарий о том, зачем мне нужен toString в моем DigitNode. – user3011391

+0

Если это ответили на ваш вопрос, пожалуйста, примите ответ. Однако, как пишет kiruwka, это может все еще не работать, так как вы не показали нам код или его не существует. –

+0

, кроме предоставленных мною givens, остальные два метода - это move() и elim(). – user3011391

Смежные вопросы