以下是一个 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 
Java 单链表负整数移动到前面:高效算法及代码示例

原文地址: https://www.cveoy.top/t/topic/pgWh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录