파이썬에서 연결된 목록 클래스를 만들려고합니다. (무의미한 일이지만 학습 연습입니다.) 노드를 제거하기 위해 작성한 메서드가 작동하지 않습니다. 연결된 목록의 첫 번째 요소를 제거하려고하면. 제거 할 노드가 연결된 목록의 다른 위치에 있으면 메서드가 제대로 작동합니다. 누군가 내가 잘못한 부분에 대해 통찰력을 줄 수 있습니까? 코드에 나타낸 바와 같이링크 된 목록의 첫 번째 노드를 제거 할 수 없습니다.
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
def __repr__(self):
return repr(self.data)
def printNodes(self):
while self:
print self.data
self = self.next
def removeNode(self, datum):
"""removes node from linked list"""
if self.data == datum:
return self.next
while self.next:
if self.next.data == datum:
self.next = self.next.next
return self
self = self.next
예를 들어, 링크 된 목록 1,2,3,4가 있다고 가정 해 보겠습니다. removeNode (1)을 호출하면 결과는 1,2,3,4입니다. removeNode (3)을 호출하면 결과는 1,2,4입니다. – carlmonday
'removeNode'의 결과를 다시 할당 하시겠습니까? 즉, 당신은'my_linked_list.removeNode (x)'또는'my_linked_list = my_linked_list.removeNode (x)'를합니까? –
나는 이전을한다 – carlmonday