Java 程序:在链表中查找中间元素
原文:https://www.studytonight.com/java-programs/java-program-to-find-the-middle-element-in-a-linked-list
在本教程中,我们将看到如何在 java 中找到链表的中间元素。LinkedList 是一种线性数据结构,其中元素不存储在连续的位置,每个元素都是一个单独的对象,具有数据部分和地址部分。每个元素都被称为一个节点。由于插入和删除的动态性和容易性,它们比数组更受欢迎。但是在继续之前,如果你不熟悉 java 中链表的概念,那么一定要查看一下 Java 中链表上的文章。
输入:输入链表元素:6 7 8 4 5
输出:链表的中间元素是:8
这可以通过使用以下方法来实现:
方法 1:使用 get()方法
方法 2:在单程中找到中间元素
让我们看看这些方法中的每一种,以便更好地理解。
Java 程序:程序 1:在链表中查找中间元素
在这个程序中,我们将看到如何在链表中找到中间元素。
算法:
- 开始
- 使用链表类创建
Integer
类型的链表。 - 现在向链表添加元素。
- 首先,使用长度乘 2 公式找到链表的中间索引。
- 使用 get(index)方法查找元素。
- 打印中间元素。
- 停下来。
让我们看看下面的例子,以更好地理解上述算法。
//Java Program to Find the Middle Element in a Linked List
import java.util.LinkedList;
public class Main
{
public static void main(String[] args)
{
// create a linked list using the LinkedList class
LinkedList<Integer> ll = new LinkedList<>();
// Add elements to LinkedList
ll.add(2);
ll.addFirst(3);
ll.addLast(5);
ll.addLast(6);
ll.addLast(8);
ll.addLast(13);
ll.addLast(18);
System.out.println("LinkedList: " + ll);
// access middle element
int middle = ll.get(ll.size()/2);
System.out.println("Middle Element: " + middle);
}
}
链表:[3,2,5,6,8,13,18] 中间元素:6
Java 程序:程序 2:在链表中查找中间元素
在这个程序中,我们将看到如何在链表中找到中间元素。
算法:
- 开始
- 使用链表数据结构创建
String
类型的链表。 - 现在向链表添加元素。
- 首先,找到链表的长度。
- 对同一个使用两个指针。
- 第一个指针将在每次迭代中递增,而第二个指针将在第二次迭代中递增。
- 当第一个指针指向链表的末尾时,第二个指针将指向链表的中间元素。
- 打印中间元素。
- 停下来。
让我们看看下面的例子,以更好地理解上述算法。
public class LinkedListTest
{
public static void main(String args[])
{
//creating a LinkedList
LinkedList linkedList = new LinkedList();
LinkedList.Node head = linkedList.head();
linkedList.add( new LinkedList.Node("Apple"));
linkedList.add( new LinkedList.Node("Mango"));
linkedList.add( new LinkedList.Node("Orange"));
linkedList.add( new LinkedList.Node("Gauva"));
linkedList.add( new LinkedList.Node("Litchi"));
//finding middle element of LinkedList in single pass
LinkedList.Node current = head;
int length = 0;
LinkedList.Node middle = head;
while(current.next() != null){
length++;
if(length%2 ==0){
middle = middle.next();
}
current = current.next();
}
if(length%2 == 1){
middle = middle.next();
}
System.out.println("The middle element of the Linked List: "+ middle);
}
}
class LinkedList{
private Node head;
private Node tail;
public LinkedList(){
this.head = new Node("head");
tail = head;
}
public Node head(){
return head;
}
public void add(Node node){
tail.next = node;
tail = node;
}
public static class Node{
private Node next;
private String data;
public Node(String data){
this.data = data;
}
public String data() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Node next() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public String toString(){
return this.data;
}
}
}
链表的中间元素:橙色