📅  最后修改于: 2023-12-03 14:56:20.193000             🧑  作者: Mango
在链表中制作中间节点头部是一个常见的操作,可以用于在链表中快速插入或删除节点。下面是一个用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();
}
}
上述程序包含以下主要部分:
ListNode
类:表示链表的节点,包含一个整数值和指向下一个节点的指针。
LinkedList
类:表示链表的操作,包含head
属性作为链表的头节点。 这个类包含了一个makeMiddleHead()
方法,用于在链表中制作中间节点头部:如果链表为空,直接插入新节点作为头节点;否则,使用双指针法找到中间节点的前一个节点,然后创建新节点并插入到其后面。
Main
类:主程序入口,在main
方法中创建一个LinkedList
对象,并连续调用makeMiddleHead()
方法插入节点。最后调用printList()
方法打印整个链表的值。
以上是一个用于在链表中制作中间节点头部的Java程序的介绍。你可以根据自己的需求进行修改和扩展。