Алгоритм печати кругового списка - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь написать алгоритм в этом вопросе (из теста, а не домашней работы):

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

Мой алгоритм печатает информацию <val list metadata>. Этот алгоритм печатает информацию в круговом списке.

if (newptr != null) // check is list empty or not
  firstnod = head // if it's not, save the first nod's data because it's circular list
  print newptr.data 
end if
loop (newptr.data != firstnod)
  print newptr.data 
  count += 1
end loop

1 Ответ

2 голосов
/ 10 марта 2011

Необходимо обновить newptr в цикле.Иначе, вы всегда будете получать одинаковые элементы и это бесконечный цикл.

loop newptr != firstnod  
  print newptr.data  
  newptr = newptr.nextnode  
endloop

Редактировать 1:

if list != NULL
    print list.data
    if list.nextNode != NULL
       Node* head, temp
       head = list
       temp = list.nextNode
       while( temp != head )
          print temp.data
          temp = temp.nextNode
       End while
    else
       print "Next node is not intialized";
else
     print "List is empty";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...