2017-02-12 6 views
2

Я создал класс Узел, который создает узел, и класс singlelist, который создаст связанный список.
В классе singlelist Я создал append метод добавления нового узла в связанный список.
Как создать метод, который будет печатать связанный список на экране, показывая данные узла и где он указывает.Как создать метод отображения связанного списка с данными и указателем на следующий узел на экране?

вот мой связанный список код:

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

class singlelist: 
    head = None 
    tail = None 

    def append(self , data): 
     node = Node(data , None) 
     if self.head is None: 
      self.head=self.tail=node 
     else: 
      self.tail.next=node 
     self.tail=node 
+1

Вы почти наверняка не хотите, чтобы сделать 'head' и' tail'. –

+0

Согласен. Определите метод '__init __ (self)' и объявите 'self.head = None' и' self.tail = None' там. – JGut

+0

Хорошо, спасибо, я понял! – secureamd2

ответ

4

Вы можете просто сделать это следующим образом:
создать метод показа в своем классе:

def show(self): 
    cur_node = self.head   #cur_node is your current node 
    while cur_node is not None: 
     print(cur_node.data , "-> " , end = "") 
     cur_node = cur_node.next 
    print(None) 
+0

почему вы использовали 'end =" "' в заявлении печати? – secureamd2

+0

@ secureamd2 Это добавляет пустую строку в конец каждого вывода, а не в новую строку. Он просто гарантирует, что вывод для всего списка находится на одной строке, а не на каждом узле, который печатается на отдельной строке. –

1

Если вы хотите распечатать объект класс, используя функцию print, вы можете определить способ, который называется __str__(self) в вашем классе.

Для этого конкретного Linked List, я хотел бы сделать что-то вроде этого:

def __str__(self): 
    return_str = "" 
    iterator = self.head 
    while iterator != None: 
     return_str += iterator.data + ", " 
     iterator = iterator.next 
    return return_str 

Затем, вы можете просто напечатать singleList объект вроде этого:

myList = singleList() 
print(myList) 
Смежные вопросы