2017-09-20 13 views
0

私はリンクされたリストクラスを持っており、リンクされたリストからアイテムを削除するクラス関数を作成しようとしています。私のリンクリストが含まれている場合リンクされたリストからアイテムを削除する

例は、:

1 
2 
3 
4 
5 
を、私は4を削除したい、それが出力:

1 
2 
3 
5 

は、ここに私のコードです:

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を削除すると最初の要素なので動作しますが、3を削除すると要素が削除されません。私は、1以外の要素では動作しない原因を逃しているのだろうかと疑問に思っています。

+1

コードに反復はありません。 –

+1

クラス定義の例がありますか?ところで、クラス関数を定義するのではなく、インスタンスメソッドを定義しています。 –

答えて

0

あなたのアイテムを見つけるためにすべての要素を繰り返してください。再帰(関数を何度も呼び出す)またはループすることによって再帰を行うことができます。このコードはどのようにループするかを示します

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

はい、私のエラーです。答えを編集しました。 –

関連する問題