2015-04-27 3 views
4

Сегодня я занимаюсь упражнением Node на python. Я, кажется, выполнил часть этого, но это не полный успех.Как распечатать элементы связанного списка?

class Node: 
    def __init__(self, cargo=None, next=None): 
     self.cargo = cargo 
     self.next = next 

    def __str__(self): 
     return str(self.cargo) 

node1 = Node(1) 
node2 = Node(2) 
node3 = Node(3) 

node1.next = node2 
node2.next = node3 

def printList(node): 
    while node: 
    print node, 
    node = node.next 
    print 

Так что это оригинальный __init__, __str__ и printList, что делает что-то вроде: 1 2 3.

Мне нужно преобразовать 1 2 3 в [1,2,3].

Я использовал append в списке, я создал:

nodelist = [] 

node1.next = node2 
node2.next = node3 


def printList(node): 
    while node: 
     nodelist.append(str(node)), 
     node = node.next 

Но все я получаю в моем списке в строке, и я не хочу этого.

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

+0

Я также рекомендую положить '' Нодлист = [] 'в первой строке' 'перечень печати () '', а затем положить '' return nodelist'' в качестве последней строки. Это заставляет функцию возвращать значение вместо доступа к переменной в глобальной области. – pzp

ответ

2

Вместо вызова str() на узле, вы должны получить доступ к его cargo:

. 
. 
.  
while node: 
    nodelist.append(node.cargo) 
    node = node.next 
. 
. 
. 
0
def printLinkedList(self): 
    node = self.head 
    while node != None: 
     print(node.getData()) 
     node = node.getNext() 
Смежные вопросы