易百教程

253、用Java编写程序来创建一个包含n个节点的双向链表。

参考以下程序来创建一个包含 n 个节点的双向链表。


public class CountList {

    //Represent a node of the doubly linked list  
    class Node {

        int data;
        Node previous;
        Node next;

        public Node(int data) {
            this.data = data;
        }
    }

    //Represent the head and tail of the doubly linked list  
    Node head, tail = null;

    //addNode() will add a node to the list  
    public void addNode(int data) {
        //Create a new node  
        Node newNode = new Node(data);

        //If list is empty  
        if (head == null) {
            //Both head and tail will point to newNode  
            head = tail = newNode;
            //head's previous will point to null  
            head.previous = null;
            //tail's next will point to null, as it is the last node of the list  
            tail.next = null;
        } else {
            //newNode will be added after tail such that tail's next will point to newNode  
            tail.next = newNode;
            //newNode's previous will point to tail  
            newNode.previous = tail;
            //newNode will become new tail  
            tail = newNode;
            //As it is last node, tail's next will point to null  
            tail.next = null;
        }
    }

    //countNodes() will count the nodes present in the list  
    public int countNodes() {
        int counter = 0;
        //Node current will point to head  
        Node current = head;

        while (current != null) {
            //Increment the counter by 1 for each node  
            counter++;
            current = current.next;
        }
        return counter;
    }

    //display() will print out the elements of the list  
    public void display() {
        //Node current will point to head  
        Node current = head;
        if (head == null) {
            System.out.println("List is empty");
            return;
        }
        System.out.println("Nodes of doubly linked list: ");
        while (current != null) {
            //Prints each node by incrementing the pointer.  

            System.out.print(current.data + " ");
            current = current.next;
        }
    }

    public static void main(String[] args) {

        CountList dList = new CountList();
        //Add nodes to the list  
        dList.addNode(1);
        dList.addNode(2);
        dList.addNode(3);
        dList.addNode(4);
        dList.addNode(5);

        //Displays the nodes present in the list  
        dList.display();

        //Counts the nodes present in the given list  
        System.out.println("\nCount of nodes present in the list: " + dList.countNodes());
    }
}

运行结果:

Nodes of doubly linked list: 
1 2 3 4 5 
Count of nodes present in the list: 5