📌  相关文章
📜  用于在链表中制作中间节点头部的Java程序(1)

📅  最后修改于: 2023-12-03 14:56:20.193000             🧑  作者: Mango

用于在链表中制作中间节点头部的Java程序介绍

在链表中制作中间节点头部是一个常见的操作,可以用于在链表中快速插入或删除节点。下面是一个用Java实现的示例程序,显示了如何在链表中制作中间节点头部。

/**
 * 链表节点类
 */
class ListNode {
    int value;
    ListNode next;

    public ListNode(int value) {
        this.value = value;
        this.next = null;
    }
}

/**
 * 链表操作类
 */
class LinkedList {
    ListNode head;  // 链表头节点

    /**
     * 在链表中制作中间节点头部
     *
     * @param value 要插入的节点值
     */
    public void makeMiddleHead(int value) {
        if (head == null) {  // 链表为空,直接插入新节点作为头节点
            head = new ListNode(value);
        } else {
            // 使用双指针法找到链表中间节点的前一个节点
            ListNode slow = head;
            ListNode fast = head;
            while (fast != null && fast.next != null) {
                fast = fast.next.next;
                slow = slow.next;
            }

            // 创建新节点并插入到中间节点的前面
            ListNode newNode = new ListNode(value);
            newNode.next = slow.next;
            slow.next = newNode;
        }
    }

    /**
     * 打印整个链表的值
     */
    public void printList() {
        ListNode current = head;
        while (current != null) {
            System.out.print(current.value + " -> ");
            current = current.next;
        }
        System.out.println("null");
    }
}

/**
 * 主程序入口
 */
public class Main {
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.makeMiddleHead(1);
        linkedList.makeMiddleHead(2);
        linkedList.makeMiddleHead(3);
        linkedList.makeMiddleHead(4);
        linkedList.makeMiddleHead(5);

        linkedList.printList();
    }
}

上述程序包含以下主要部分:

  1. ListNode类:表示链表的节点,包含一个整数值和指向下一个节点的指针。

  2. LinkedList类:表示链表的操作,包含head属性作为链表的头节点。 这个类包含了一个makeMiddleHead()方法,用于在链表中制作中间节点头部:如果链表为空,直接插入新节点作为头节点;否则,使用双指针法找到中间节点的前一个节点,然后创建新节点并插入到其后面。

  3. Main类:主程序入口,在main方法中创建一个LinkedList对象,并连续调用makeMiddleHead()方法插入节点。最后调用printList()方法打印整个链表的值。

以上是一个用于在链表中制作中间节点头部的Java程序的介绍。你可以根据自己的需求进行修改和扩展。