削除:メソッド pop(補足)
《関連記事》
末尾のノードを、リストから取り出す様子を、図解とともに解説します。
class myList(object): ... def pop(self): prev, node = self.head, self.head.next while node: if node==self.tail: value = node.item self.tail = prev # (1) prev.next = node.next # (2) del node # (3) return value prev, node = node, node.next else: ...
- (1)末尾のノード self.tail は、直前のノード prev と同じ値に再設定します。すると、直前のノードが、新たな末尾のノードになります。
- (2)直前のノードの後続 prev.next は、削除したいノードの後続 node.next と同じ値に再設定します。すると、削除したい直前のノードの後に、削除したい直後のノード(連結リストの末端)が続くようになります。
- (3)削除したい要素を含む、オブジェクト node を削除します。