2016-11-04 16 views
0

以下は、私が取り組んでいるコードのブロックです。それは学校のためのものです。これについてはかなりの間作業していて、たぶん私はちょうど試してみました。誰かが私の方法の誤りを私に説明することができましたか?二重にリンクされたPythonリストでpop関数を実装する方法

def pop(self, idx=-1): 
    """Deletes and returns the element at idx (which is the last element, 
    by default).""" 
    nidx = self._normalize_idx(idx) 
    if nidx >= len(self): 
     raise IndexError 
    n = self.head 
    for _ in range(self[-1]): 
     n = n.next 
    return n 
    n.prior.next = n.next 
    n.next.prior = n.prior 
    self.length -= 1 
+0

エラーが発生していますか?あなたの入力は何ですか?あなたの出力はあなたの期待される出力とは何ですか?また、リターンが正しく実行された後も、どのラインも認識していませんか?メソッドはその時点で終了します。 – IanAuld

答えて

0

私はあなたのエラーがすべてのこれらの行にあると思います:

​​

あなたrange通話に使用している境界は奇妙です。 self[-1]ではなく、nidx回繰り返す必要があります。

returnは、残りの機能の実行を停止するので、この時点ではreturnにしたくない可能性があります。 return行をリンク解除コードの下に移動してみてください。

また、ノードを返すことになっているかどうか(n.nextn.priorをリセットしないと迷子リンクを持つ)か、ノードに含まれている値を決定する必要があります。通常、リンクされたリストのノードは、外部コードに公開されない実装の詳細なので、値を返すでしょう。

関連する問題