Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java程序在一次迭代中获取LinkedList的中间元素

   Java 实例大全

在此示例中,我们将学习在Java中的一次迭代中获取链表的中间元素。

要了解此示例,请确保您首先访问以下教程,

示例1:通过一次迭代获取LinkedList的中间元素

class LinkedList {

  //创建Node类的对象
  //表示链表的头部
  Node head;

  //静态内部类
  static class Node {
    int value;

    //将每个节点连接到下一个节点
    Node next;

    Node(int d) {
      value = d;
      next = null;
    }
  }

  public static void main(String[] args) {

    //创建一个LinkedList对象
    LinkedList linkedList = new LinkedList();

    //为每个链表节点赋值
    linkedList.head = new Node(1);
    Node second = new Node(2);
    Node third = new Node(3);

    //将链表中的每个节点连接到下一个节点
    linkedList.head.next = second;
    second.next = third;

    //打印链表
    Node pointer = linkedList.head;
    System.out.print("LinkedList: " );
    while (pointer != null) {
      System.out.print(pointer.value + " ");
      pointer = pointer.next;
    }

    // 找到中间元素
    Node ptr1 = linkedList.head;
    Node ptr2 = linkedList.head;

    while (ptr1.next != null) {

      //将ptr1增加2,将ptr2增加1
      //如果ptr1指向最后一个元素
      //ptr2将指向中间元素
      ptr1 = ptr1.next;
      if(ptr1.next !=null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }

    System.out.println("\n中间元素: " + ptr2.value);

  }
}

输出结果

LinkedList: 1 2 3 
中间元素: 2

在上面的示例中,我们已经用Java实现了链表数据结构。然后,我们在一个循环中找到链表的中间元素。注意代码,

    while (ptr1.next != null) {

      //将ptr1增加2,将ptr2增加1
      //如果ptr1指向最后一个元素
      //ptr2将指向中间元素
      ptr1 = ptr1.next;
      if(ptr1.next !=null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }

在这里,我们有两个变量ptr1和ptr2。 我们使用这些变量来遍历链表。

在每次迭代中,ptr1将访问两个节点,而ptr2将访问链表的单个节点。

现在,当ptr1到达链接列表的末尾时,ptr2将位于中间。 这样,我们可以在单次迭代中获得链表的中间位置。

示例2:使用LinkedList类获取LinkedList的中间元素

import java.util.LinkedList;

class Main {
  public static void main(String[] args){

    //使用 LinkedList 类创建链表
    LinkedList<String> animals = new LinkedList<>();

    //向 LinkedList 添加元素
    animals.add("Dog");
    animals.addFirst("Cat");
    animals.addLast("Horse");
    System.out.println("LinkedList: " + animals);

    //访问中间元素
    String middle = animals.get(animals.size()/2);
    System.out.println("中间元素: " + middle);
    }
}

输出结果

LinkedList: [Cat, Dog, Horse]
中间元素: Dog

在上面的示例中,我们使用了LinkedList类来实现链表数据结构。注意表达式

animals.get(animals.size()/2)
  • size()/ 2 - 返回中间元素的位置

  • get() - 返回位于中间位置的元素

Java 实例大全