欢迎访问宙启技术站
智能推送

创建Java函数进行链表操作

发布时间:2023-06-23 20:13:00

链表是一种数据结构,它由一系列的节点组成,每个节点都包含数据和指向下一个节点的指针。与数组不同,链表的节点被动态地分配,所以它可以根据需要增长或缩小,而不需要预先分配存储空间。

在Java中,我们可以使用类来表示一个节点,这个类会包括两个实例变量,一个用于存储节点的数据,另一个用于存储指向下一个节点的指针。我们也需要一个类来表示整个链表,这个类会包括存储链表头节点的实例变量和一些方法用于添加、删除和遍历链表。

下面是一个用Java实现链表的示例代码:

public class ListNode {

   int val;

   ListNode next;

   ListNode(int x) {

      val = x;

      next = null;

   }

}

public class LinkedList {

   ListNode head;

   public LinkedList() {

      head = null;

   }

   public void add(int val) {

      ListNode newNode = new ListNode(val);

      if (head == null) {

         head = newNode;

      } else {

         ListNode current = head;

         while (current.next != null) {

            current = current.next;

         }

         current.next = newNode;

      }

   }

   public void delete(int val) {

      if (head == null) {

         return;

      }

      if (head.val == val) {

         head = head.next;

         return;

      }

      ListNode current = head.next;

      ListNode previous = head;

      while (current != null && current.val != val) {

         previous = current;

         current = current.next;

      }

      if (current != null) {

         previous.next = current.next;

      }

   }

   public void print() {

      if (head == null) {

         System.out.println("Empty list.");

      }

      ListNode current = head;

      while (current != null) {

         System.out.println(current.val);

         current = current.next;

      }

   }

}

在这个例子中,ListNode类表示节点,LinkedList类表示链表。在LinkedList类中,我们通过head实例变量来跟踪链表头节点。add方法用于将一个值添加到链表末尾,delete方法用于将指定值的节点从链表中删除,print方法用于遍历整个链表并输出它的值。

使用这些方法,我们可以轻松地创建、添加、删除和遍历链表,如下所示:

LinkedList list = new LinkedList();

list.add(1);

list.add(2);

list.add(3);

list.print(); // 输出:1 2 3

list.delete(2);

list.print(); // 输出:1 3

总之,使用Java可以方便地创建链表数据结构。通过创建类来表示节点和链表,并实现添加、删除和遍历方法,我们可以使用链表来解决各种问题,从简单的代码实现到复杂的数据结构和算法。