在带头结点单链表中查找最小值,将新输入的值插入到最小值前面,输出插入新元素后的单链表各元素。
时间: 2024-03-23 20:12:35 浏览: 18
算法步骤:
1. 初始化最小值为头结点的下一个节点的值,将最小值节点指向头结点的下一个节点;
2. 从头结点的下一个节点开始遍历单链表,若当前节点的值比最小值还小,则更新最小值和最小值节点;
3. 将新节点插入到最小值节点前面;
4. 输出插入新元素后的单链表各元素。
Java代码实现如下:
```
public void insertBeforeMin(int x) {
ListNode minNode = head.next; // 初始化最小值节点为头结点的下一个节点
while (minNode.next != null) { // 从头结点的下一个节点开始遍历单链表
if (minNode.next.val < minNode.val) { // 若当前节点的值比最小值还小,则更新最小值和最小值节点
minNode = minNode.next;
}
}
ListNode newNode = new ListNode(x); // 创建新节点
newNode.next = minNode.next; // 将新节点指向最小值节点的下一个节点
minNode.next = newNode; // 将最小值节点指向新节点
printList(); // 输出插入新元素后的单链表各元素
}
```
其中,printList() 方法用于输出单链表各元素:
```
public void printList() {
ListNode p = head.next;
while (p != null) {
System.out.print(p.val + " ");
p = p.next;
}
System.out.println();
}
```