2017-03-02 18 views
0

파이썬에서 값 전달 속성을 이해하는 데 문제가 있습니다. 다음 코드에서 runnercurrent 사본을 만들고 있으며 runner.nextrunner.next.next으로 설정하는 동안 runner.next은 주어진 연결 목록의 다음 노드를 가리 킵니다. 어떻게 이것이 cur.next.next에 영향을 줍니까? runner.nextcur.next이 모두 같은 주소를 가리 킵니까? 왜냐하면 내 생각에 주자는 현재의 복사본 일 뿐이며 원래의 cur.next에 액세스 할 수 없기 때문입니다. 제발 저를 강의하십시오.python linkedlist의 node.next 포인터에 대한 설명이 필요합니다

 def remove_dups_followup(ll): 
      if ll.head is None: 
       return 

      current = ll.head 
      while current: 
       runner = current 
       while runner.next: 
        if runner.next.value == current.value: 
         runner.next = runner.next.next 
        else: 
         runner = runner.next 
       current = current.next 

      return ll.head 

답변

0
runner = current 

이것은 사본 current를 만드는 것이 아니라도 current로 알려진 객체에 다른 이름을 지정하지 않습니다. 따라서 runnercurrent은 동일한 오브젝트 인스턴스에 대해 단순히 두 개의 서로 다른 이름입니다. 따라서 runner 상태에 대한 변경 사항은 적어도 runner이 목록의 다음 노드에 재 할당 될 때까지 current에 영향을줍니다.