間の要素の削除

問題

間のnodeだけ与えられたときにそれを削除する

考え方

削除したいnodeが次のnodeに当たるように書き換えれば良い

コード例

class Node():
    def __init__(self, d):
        self.data = d
        self.next = None

    def appendToTail(self, d):
        end = Node(d)
        n = self
        while(n.next):
            n = n.next
        n.next = end

def deleteNode(head, d):
    """
    初めに出てきたdを削除する
    """
    n = head
    if(n.data == d):
        return head.next

    while(n.next):
        if(n.next.data == d):
            n.next = n.next.next
            return head
        n = n.next
    return head

if __name__ == "__main__":
    node = Node(0)
    for i in range(4):
        node.appendToTail(i+1)

    # 2番目のnodeを与える
    delete(node.next)

    while node != None:
        print(node.data)
        node = node.next

参考

世界で闘うプログラミング力を鍛える本 | マイナビブックス