Java 单链表负整数移动到前面:高效算法及代码示例
以下是一个 Java 代码示例,演示了如何将所有负整数的元素移动到其他元素前面:
public class LinkedList {
private Node head;
private class Node {
int data;
Node next;
Node(int data) {
this.data = data;
this.next = null;
}
}
public void add(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
}
public void moveNegativesToFront() {
Node current = head;
Node prev = null;
// 找到第一个正整数节点
while (current != null && current.data >= 0) {
prev = current;
current = current.next;
}
// 将正整数节点之前的所有负整数节点移动到链表前面
while (current != null) {
if (current.data < 0) {
Node next = current.next;
current.next = head;
head = current;
prev.next = next;
current = prev;
}
prev = current;
current = current.next;
}
}
public void display() {
Node current = head;
while (current != null) {
System.out.print(current.data + ' ');
current = current.next;
}
System.out.println();
}
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.add(1);
list.add(2);
list.add(-1);
list.add(-2);
list.add(3);
list.add(-3);
list.add(4);
System.out.print('Original List: ');
list.display();
list.moveNegativesToFront();
System.out.print('Modified List: ');
list.display();
}
}
输出结果:
Original List: 1 2 -1 -2 3 -3 4
Modified List: -1 -2 -3 1 2 3 4
原文地址: https://www.cveoy.top/t/topic/pgWh 著作权归作者所有。请勿转载和采集!