Java >> Java tutorial >  >> Tag >> new

Indsættelse af en ny node i en linket listedatastruktur

Indsættelse af ny node i linket liste kan gøre 3 måder.

  1. I starten af ​​den linkede liste
  2. Midt på den linkede liste
  3. I slutningen af ​​den linkede liste

Før du starter, skal du kende til linket liste og hvordan du opretter den.

1. Ved Start af linket liste

package in.eyehunt.data.struc;
public class LinkedList {
    Node head; // head of list
    // Linked list Node.
    class Node {
        int data;
        Node next;
        // Parameterized constructor
        Node(int d) {
            data = d;
            next = null;
        }
    }
    // method to add new node in start
    void push(int n) {
        //create new node
        Node newNode = new Node(n);
        // next node is head
        newNode.next = head;
        // move had point to new node
        head = newNode;
    }
    void printAllNodes() {
        Node node = head;
        while (node != null) {
            System.out.print("-> "+node.data);
            node = node.next;
        }
    }
    public static void main(String a[]) {
        //create a simple linked list with 4 nodes
        LinkedList linkedList = new LinkedList();
        linkedList.push(1);
        linkedList.push(4);
        linkedList.push(3);
        linkedList.push(2);
        linkedList.printAllNodes();
    }
}

2. I Midt af linket liste

Indsæt en ny node med data i midten af ​​listen og få en linket liste indeholdende n noder..

Så nu er tilstanden :

  • Hvis n er lige, indsæt derefter den nye node efter (n/2) th node,
  • andet indsæt den nye node efter (n+1)/ 2. node.

Skal læse denne vejledning for at finde længden af ​​en linket listedata for bedre forståelse.

package in.eyehunt.data.struc;
public class LinkedList {
    Node head; // head of list
    // Linked list Node.
    class Node {
        int data;
        Node next;

        // Parameterized constructor
        Node(int d) {
            data = d;
            next = null;
        }
    }
    void push(int n) {
        //create new node
        Node newNode = new Node(n);
        // next node is head
        newNode.next = head;
        // move had point to new node
        head = newNode;
    }
    void addMiddleNode(int n) {

        if (head == null) {
            head = new Node(n);
        } else {
            int middleNode = (count() % 2 == 0) ? (count() / 2) : ((count() + 1) / 2);

            //create new node
            Node newNode = new Node(n);
            Node pointerNode = head;
            int countNodes = 0;
            while (countNodes != middleNode -1) {
                pointerNode = pointerNode.next;
                countNodes ++;
            }
            System.out.println("\n Middle node of linked List " + middleNode);
            System.out.println("\n Middle node data " + pointerNode.data);

            // adding new node in middle
            newNode.next = pointerNode.next;
            pointerNode.next = newNode;
            printAllNodes();
        }
    }
    //Returns count of nodes in linked list (iteration)
    public int count() {
        int a = 0;
        Node n = head;
        while (n != null) {
            n = n.next;
            a++;
        }
        return a;
    }
    void printAllNodes() {
        Node node = head;
        while (node != null) {
            System.out.print("-> " + node.data);
            node = node.next;
        }
    }
    public static void main(String a[]) {

        //create a simple linked list with 4 nodes
        LinkedList linkedList = new LinkedList();
        linkedList.push(1);
        linkedList.push(9);
        linkedList.push(7);
        linkedList.push(2);
        linkedList.printAllNodes();
        linkedList.addMiddleNode(3);
    }
}

3. Tilføj node i linket liste Sidste

package in.eyehunt.data.struc;
public class LinkedList {
    Node head; // head of list
    // Linked list Node.
    class Node {
        int data;
        Node next;
        // Parameterized constructor
        Node(int d) {
            data = d;
            next = null;
        }
    }
    void append(int n) {
        // create new node
        Node newNode = new Node(n);
        // if head is null add new head
        if (head == null) {
            head = new Node(n);
            return;
        }
        //traverse till the last node
        Node last = head;
        while (last.next != null) {
            last = last.next;
        }
        //Add the new node of last node
        last.next = newNode;
        return;
    }
    void printAllNodes() {
        Node node = head;
        while (node != null) {
            System.out.print("-> "+node.data);
            node = node.next;
        }
    }
    public static void main(String a[]) {
        //create a simple linked list with 4 nodes
        LinkedList linkedList = new LinkedList();
        linkedList.append(1);
        linkedList.append(4);
        linkedList.append(3);
        linkedList.append(2);
        linkedList.printAllNodes();
    }
}

Java tag