2017-06-26 13 views
0
def remove(self: 'LinkedList') -> None: 
    occur = self._last 
    if occur!= None: 
     occur = self._first 
    occur._first = None 

>>> lst = LinkedList([1, 2, 1, 3, 2, 1]) 
>>> lst.remove() 
>>> lst == LinkedList([2, 1, 3, 2, 1]) 

実際の結果を削除します。イムあなたは._firstは今からリストにの要素を参照する必要があることを意味し、リンクされたリストの最初の要素を、削除にしたい場合は、私の実装はは、リンクリストの最初の要素

+0

申し訳ありませんが、あなたの質問は何ですか? –

+0

私の質問が更新されました – TheGamer

+1

**ローカル参照である 'occur' **の参照のみを設定しました。 –

答えて

0

に右であるかどうかわかりません。

さらに、._last要素が._first要素であるかどうかをチェックする必要があります。そのような場合は、._lastNoneに設定する必要があります。この場合、リストには1つの要素しか含まれていないためです。

だから、あなたがこれを行うことができます:

def remove_head (self: 'LinkedList') -> None: 
    # check if the list is not empty 
    if self._first is not None: 
     # check if first and last refer to the same node 
     if self._last is self._first: 
      # if so the list contains one node, so set _last to None 
      self._last = None 
     # update the pointer to the _first element to advance one hop 
     self._first = self._first._next 

私はここノードの次のノードへの参照が_nextと呼ばれていることを前提に作られました。しかし、あなたはそれを簡単に変更することができます。 remove_headのように、わかりやすい名前で関数の名前を付けることをお勧めします。

関連する問題