Не получается корректный вывод на печать со связанными списками

#python #list #linked-list #nodes

#python #Список #связанный список #узлы

Вопрос:

В настоящее время это функция, с которой я работаю. Это связанный список, использующий класс nodes. Вот реализация этого из моего учебника. Однако, когда я пытаюсь напечатать, я получаю этот вывод.

<main.Объект узла в 0x000001C1A21E5470> <main.Объект узла в 0x000001C1A21E5438> <main.Объект узла в 0x000001C1A21E54A8> <main.Объект узла в 0x000001C1A21E5400>

Я читал, что использование __repr__ могло бы помочь при печати, однако у меня это не сработало, когда я его реализовал.

 def copyList(self):
    links = LinkedList()
    current = self.head
    while current.getNext() != None:
        links.addLast(current)
        current= current.getNext()
    links.addLast(current.getData())
    return links
  

Функция вызывается следующим образом

 list2=list1.copyList()
print(list2)
  

Функция repr, которую я пытался

 def __repr__(self):
    string=''
    current = self.head
    if current != None:
        string  = str(current.getData())
        current = current.getNext()
        counter=2
        while current:
            string  = " " str(current.getData())
            current = current.getNext()
            if counter>9:
                string=string 'n'
                counter=0
            counter=counter 1
    return string
  

Комментарии:

1. Что current.getData() возвращает?

2. Он возвращает строковое значение узла

Ответ №1:

Кажется, я неправильно понял ваш вопрос.

Я думаю, что проблема в вашей copyList функции. Это должно быть:

 def copyList(self):
    links = LinkedList()
    current = self.head
    while current.getNext() != None:
        links.addLast(current.getData())
        current = current.getNext()
    links.addLast(current.getData())
    return links
  

Вы использовали links.addLast(current) . Нужно посмотреть реализацию addLast() метода для получения более подробной информации.

Комментарии:

1. Прямо сейчас в моем коде есть _ str_ и _ repr_ . Должен ли я избавиться от одного? Я использовал _ str_ только раньше, и, похоже, это тоже не сработало. Оба _ str_ и _ repr_ имеют одинаковый код

2. @pythonHelp извините, я могу неправильно понять ваш вопрос. Я отредактировал свой ответ. Надеюсь, это может помочь.

3. Спасибо, это фактически устранило мою проблему. Я использовал узлы в качестве параметров в качестве функций, когда это должны были быть строки. Спасибо!

4. @pythonHelp рад помочь. вы можете принять этот ответ 🙂