2015-02-18 1 views
0

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

Однако мне также необходимо отобразить звездочку в «текущей позиции», которая является узлом, на который ссылается ссылка «cur».

Конечно, я мог бы начать с cur, распечатать звездочку и обвести вокруг списка, но это не приведет к печати списка в порядке. Есть ли способ увидеть, какие ссылки ссылаются на узел/адрес? Или более простой способ сделать это?

public void displayList(){ 
     Node temp = this.getHead(); 

     System.out.print(" ~ "); 

     for(int i = 0; i < this.getListLength(); i++){ 
      System.out.print(temp.getId() + "/" + temp.getTicks() + "/" + temp.getName() + " ~ "); 
      temp = temp.getLink();//advance temp 
     } 

     System.out.println(); 
} 
+0

Где находится 'cur'? Я не вижу этого в вашем коде. –

+0

Его объявили в другом месте класса List. На самом деле не имеет значения, где он ссылается, поэтому я не думал, что это важно для публикации, но я могу опубликовать все классы List и Node, если вы хотите. – PsylentKnight

ответ

1

Если вы хотите, чтобы буквально проверить ссылки, вы можете попытаться сравнить узлы с помощью node == cur

Однако, это может быть безопаснее определить equals() метод в классе Node и использовать этот метод для сравнения Узлы: cur.equals(node). В зависимости от вашей проблемы/реализации equals() это может вводить в заблуждение (например, несколько узлов, имеющих одни и те же данные, но разные индексы), поэтому не забудьте написать тесты!

+0

Хорошо, что делает вещи простыми, потому что у узлов уже есть id, поэтому я могу просто написать метод equals, как вы сказали, что сравнивает id. Благодарю. :) – PsylentKnight

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