创建n个节点的循环链表并计算节点数的Java程序

1 简介

在此程序中,我们必须找出循环链表中存在的节点数。我们首先创建循环链接列表,然后遍历列表并将变量“ count”增加1。

2 算法思路

  • 定义一个Node类,该类代表列表中的一个节点。它具有两个属性数据,下一个将指向下一个节点。
  • 定义另一个用于创建循环链表的类,它具有两个节点:head和tail。它有两种方法:add()和display()。
  • add()会将节点添加到列表中:
    • 首先检查size是否为null或head为null。然后它将节点插入为头。
    • 头部和尾部都将指向一个新添加的节点。
    • 如果head不为空,则新节点将是新尾,并且新尾将指向头,因为它是一个循环链表。
  • 定义新临时节点,该临时节点将指向头节点。
  • 通过使当前节点指向列表中的下一个节点,直到当前指向头,遍历列表以对节点进行计数。

3 程序实现

/**
 * 一点教程网: http://www.yiidian.com
 */
public class CountNodes {    
        //Represents the node of list.    
        public class Node{    
            int data;    
            Node next;    
            public Node(int data) {    
                this.data = data;    
            }    
        }    
            
        public int count;    
        //Declaring head and tail pointer as null.    
        public Node head = null;    
        public Node tail = null;    
            
        //This function will add the new node at the end of the list.    
        public void add(int data){    
            //Create new node    
            Node newNode = new Node(data);    
            //Checks if the list is empty.    
            if(head == null) {    
                 //If list is empty, both head and tail would point to new node.    
                head = newNode;    
                tail = newNode;    
                newNode.next = head;    
            }    
            else {    
                //tail will point to new node.    
                tail.next = newNode;    
                //New node will become new tail.    
                tail = newNode;    
                //Since, it is circular linked list tail will point to head.    
                tail.next = head;    
            }    
        }    
            
        //This function will count the nodes of circular linked list    
        public void countNodes() {    
            Node current = head;    
            do{    
                //Increment the count variable by 1 for each node    
                count++;    
                current = current.next;    
            }while(current != head);    
            System.out.println("Count of nodes present in circular linked list: "+count);    
        }    
            
        public static void main(String[] args) {    
            CountNodes cl = new CountNodes();    
            cl.add(1);    
            cl.add(2);    
            cl.add(4);    
            cl.add(1);    
            cl.add(2);    
            cl.add(3);    
            //Counts the number of nodes present in the list    
            cl.countNodes();    
        }    
}

输出结果为:

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 

 

热门文章

优秀文章