単独リンクリスト内のノードを削除するには

単独リンクリスト内のノードを削除するには

ノードリストを削除するには

次のようにリスト内のノードを削除するには:

  • ノードの前に削除するノードを見つけ1

  • 2.ノードに次のノードのノードの前面

  • 3.削除されたノードのメモリが解放されます


public class deleteNode
{

    Node head;

    class Node
    {
        int data;
        Node next;
        Node(int d)
        {
            data = d;
            next = null;
        }
    }



    void deleteNode(int key)
    {
        // Store head node
        Node temp = head, prev = null;

        // If head node itself holds the key to be deleted
        if (temp != null && temp.data == key)
        {
            head = temp.next; // Changed head
            return;
        }

        // Search for the key to be deleted, keep track of the
        // previous node as we need to change temp.next
        while (temp != null && temp.data != key)
        {
            prev = temp;
            temp = temp.next;
        }

        // If key was not present in linked list
        if (temp == null) return;

        // Unlink the node from linked list
        prev.next = temp.next;
    }




    public void push(int new_data)
    {
        Node new_node = new Node(new_data);
        new_node.next =  head;
        head = new_node;
    }


    public void printList()
    {
        Node tnode = head;

        while (tnode!=null)
        {
            System.out.println(tnode.data);
            tnode = tnode.next;

        }
    }

    public static void main(String[] args)
    {
        deleteNode llist = new  deleteNode();

        llist.push(7);
        llist.push(1);
        llist.push(3);
        llist.push(2);

        System.out.println("\nCreated Linked list is:");
        llist.printList();

        llist.deleteNode(1); // Delete node at position 4

        System.out.println("\nLinked List after Deletion at position 4:");
        llist.printList();
    }



}

今度は、leetcodeの質問を考えてみましょう:

リンクされたリストの237ノードの削除

そのノードへのアクセスのみ与えられ、単独リンクリストに(尾を除く)のノードを削除する機能を記述します。

リンクリストを考える-ヘッド= [4,5,1,9] 以下のようになります。

例1:

入力:ヘッド= [4,5,1,9]は、ノードは、= 5
出力:[4,1,9]
説明:あなたは値5と第2のノードが与えられ、リンクされたリストは、となるべき4 - > 1 - > 9あなたの関数を呼び出した後。

例2:

入力:ヘッド= [4,5,1,9]は、ノード= 1
出力:[4,5,9]
説明:あなたは値1と第3のノードが与えられ、リンクされたリストは、となるべき4 - > 5 - > 9あなたの関数を呼び出した後。

class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}

この質問では、現在のノードにはパッシングはありません。ノードは次のノードが現在のノードであることを知っているので。限り、我々は現在のノードの次のノード情報を現在のノードのすべての情報を交換するように、我々はまた、変装、削除ノードを完了しました。

参考文献:

削除されたリンクリスト

単独リンクリスト内のノードを削除するには

おすすめ

転載: www.cnblogs.com/zhichun/p/12112541.html