在Java中查找链接的链接列表
时间:2020-02-23 14:34:10 来源:igfitidea点击:
在本教程中,我们将看到如何在Java中查找链接列表的长度。
我们可以显然使用Java链接列表类的大小()方法,但在此处,我们将在实现链接列表时查看如何查找链接列表的长度。
有两种方法可以找到链接的长度:
- 迭代
- 递归
迭代:
我们可以迭代下一个节点,直到节点为null并使用计数器计数迭代的数量,并且我们将在最后获取链接列表的长度。
//Find length of linked list using iterative method public int lengthOfLinkedList() { Node temp=head; int count = 0; while(temp!=null) { temp=temp.next; count++; } return count;
递归:
我们还可以使用递归来查找链接的长度。
基本情况:如果节点为null,则返回0.这将是我们迭代的基本情况。
//Find length of linked list using recursion public int lengthOfLinkedList() { Node temp=head; int count = 0; while(temp!=null) { temp=temp.next; count++; } return count;
Java程序查找LinkedList的长度:
创建名为singlylinkedlist.java的Java文件。
package org.igi.theitroad; class Node { public int data; public Node next; public void displayNodeData() { System.out.println("{ " + data + " } "); } } public class SinglyLinkedList { private Node head; public boolean isEmpty() { return (head == null); } //used to insert a node at the start of linked list public void insertFirst(int data) { Node newNode = new Node(); newNode.data = data; newNode.next = head; head = newNode; } //Find length of linked list using iterative method public int lengthOfLinkedList() { Node temp=head; int count = 0; while(temp!=null) { temp=temp.next; count++; } return count; } //Find length of linked list using recursion public int lengthOfLinkedListRec(Node head) { Node temp=head; if(temp==null) { return 0; } else { return 1+ lengthOfLinkedListRec(temp.next); } } //used to delete node from start of linked list public Node deleteFirst() { Node temp = head; head = head.next; return temp; } //used to delete node from start of linked list public Node deleteFirst(Node node) { Node temp = head; head = head.next; return temp; } //Use to delete node after particular node public void deleteAfter(Node after) { Node temp = head; while (temp.next != null && temp.data != after.data) { temp = temp.next; } if (temp.next != null) temp.next = temp.next.next; } //used to insert a node at the start of linked list public void insertLast(int data) { Node current = head; while (current.next != null) { current = current.next; //we'll loop until current.next is null } Node newNode = new Node(); newNode.data = data; current.next = newNode; } //For printing Linked List public void printLinkedList() { System.out.println("Printing LinkedList (head --> last) "); Node current = head; while (current != null) { current.displayNodeData(); current = current.next; } System.out.println(); } }
让我们创建名为linkedlistmain.java的主类来创建linkedlist。
package org.igi.theitroad; public class LinkedListMain { public static void main(String args[]) { SinglyLinkedList myLinkedlist = new SinglyLinkedList(); myLinkedlist.insertFirst(5); myLinkedlist.insertFirst(6); myLinkedlist.insertFirst(7); myLinkedlist.insertFirst(1); myLinkedlist.insertLast(2); myLinkedlist.printLinkedList(); //Linked list will be //2 -> 1 -> 7 -> 6 -> 5 System.out.println("Length of Linked List using iteration: "+myLinkedlist.lengthOfLinkedList()); System.out.println("Length of Linked List Using recursion: "+myLinkedlist.lengthOfLinkedListRec(myLinkedlist.getHead())); } }
运行上面的程序时,我们将得到以下输出:
Printing LinkedList (head --> last) { 1 } { 7 } { 6 } { 5 } { 2 } Length of Linked List using iteration: 5 Length of Linked List Using recursion: 5