>

먼저 링크리스트를 생성 한 다음리스트리스트 노드를 인쇄하고 싶습니다. 나는 몇 가지 방법을 시도했지만 항상 잘못된 결과를 얻습니다.

아래는 제 코드입니다 :

class node:
    def __init__(self, dataVal=None):
        self.dataVal = dataVal
        self.nextVal = None
class LinkedList:
    def __init__(self):
        self.headVal = None
    def printList(self):
        printVal = self.headVal
        while printVal is not None:
            print(printVal.dataVal)
            printVal = printVal.nextVal
    def insertEnd(self, n_node):
        new_node = node(n_node)
        if self.headVal is None:
            self.headVal = node(new_node)
        else:
            end = self.headVal
            while(end.nextVal):
                end = end.nextVal
            end.nextVal = new_node
def createList(array, n):
    linkedList = LinkedList()
    for i in range(n):
        linkedList.insertEnd(array[i])
    return linkedList
if __name__=='__main__':
    t = 2
    n = [5,6]
    array = [[1,2,3,4,5], [2,3,6,7,5,1]]
    for i in range(t):        
        head = createList(array[i], n[i])
        print(head.printList())

현재 출력 :

<__main__.node object at 0x0000026152300400>
2
3
4
5
None
<__main__.node object at 0x00000261523257B8>
3
6
7
5
1
None

내 예상은 :

<__main__.node object at 0x0000026152300400>
1
2
3
4
5
<__main__.node object at 0x00000261523257B8>
2
3
6
7
5
1

<없음>"없음"이 나타나는 이유와 개체가 인쇄 된 이유를 모르겠습니다. 누구든지 도울 수 있습니까?


  • 답변 # 1

    None 를 제거하기 위해 인쇄를 제거하십시오 . 변경

    print(head.printList())
    
    

    to

    head.printList()
    
    

    또한

    if self.headVal is None:
    
    

    하지만 더 많은 파이썬과 동일하다

    if not self.headVal:
    
    

  • 이전 ConcreteObserver가 Observer 패턴에서 ConcreteSubject에 대한 참조를 보유하는 이유는 무엇입니까?
  • 다음 c# - Visual Studio에서 KeyDown 이벤트, KeyPress 이벤트 및 KeyUp 이벤트의 차이점