2017-09-20 13 views
0

링크 된 목록 클래스가 있고 연결된 함수 목록에서 항목을 제거하는 클래스 함수를 작성하려고합니다. 내 연결리스트가 포함되어있는 경우연결된 목록에서 항목 제거

는 는

예, :

1 
2 
3 
4 
5 

과 내가 4를 제거하려면, 그것은 출력 :와

def remove(self,item): 
    if self.isEmpty(): 
     raise StopIteration("List is empty") 
    else: 
     element = self.head 
     if element.next.item == item: 
      element.next = element.next.next 
     self.count-=1 
     return True 

문제 : 여기

1 
2 
3 
5 

내 코드입니다 내 코드는 링크 된 목록에서 보이는 첫 번째 항목 만 고려하고 첫눈에 제거합니다.

예를 들어, 1을 제거하면 첫 번째 요소이므로 작동하지만 3을 제거하면 프로그램에서 요소를 제거하지 않습니다. 1을 제외한 다른 요소에서 작동하지 않는 원인을 놓치고 있는지 궁금합니다.

+1

코드에는 반복이 없습니다. –

+1

클래스 정의의 예제가 있습니까? BTW, 당신은 클래스 함수를 정의하는 것이 아니라 인스턴스 메서드입니다. –

답변

0

항목을 찾기 위해 모든 요소를 ​​반복해야합니다. 재귀 (call remove function)를 반복하거나 반복하여 반복 할 수 있습니다. 이 코드는 루프를 수행하는 방법을 보여줍니다.

def remove(self,item): 
    if self.isEmpty(): 
     raise StopIteration("List is empty") 
    else: 
     element = self.head 
     // if 1st element itself 
     if element.item == item: 
      self.head = element.next 
     // other than first 
     while element.next != null: 
      if element.next.item == item: 
       element.next = element.next.next 
       self.count-=1 
       return True 
      element = element.next 
     return False // return Flase if 'item' is not present in the list 
+0

그렇게하는 것이 좋습니다.하지만 첫 번째 요소 자체를 고려할 수도 있습니다. – Electric

+0

예, 제 잘못입니다. 답변을 수정했습니다. –