1
def delete_node(head, value):
    p=head
    if p is None:
        return None
    while p.value!=value:
        p=p.next
        if p.next is head and p.value!=value:
            return head
    p.value=p.next.value
    if p.next==head:
        head=p
    p.next=p.next.next
    return head

上記は、ノードの値に基づいて循環リンク リスト内のノードを削除するための私のコードです。この場合、コードは結果を提供しません-リストに要素が1つしかなく、それを削除しました..したがって、結果は空のセットになるはずです..しかし、私はp.value = p.next.valueを取ったからです再びそれ自体を指し、同じ値がリストにあります! 誰でも私を助けることができます!事前にサンクス!:)

4

1 に答える 1

2

ここでの最も簡単な解決策は、空のリストの場合に自分自身を指すダミー ノードを用意することです。結果として、空のリストでは、それ自体を指す 1 つのノード (ダミー) があり、1 つの要素を持つリストでは、ダミーが要素を指し、要素がダミーを指します。

特別なケースの必要性を回避し、一般的にコードを簡素化します。リストが空かどうかを確認するには、次のようにしますdummy.next is dummy

于 2013-05-28T16:34:31.397 に答える