【解決方法】誰かがなぜ4行目がエラーなのか説明してもらえますか?


Java

class ListNode {
    int data;
    ListNode next;
    public ListNode(int data) {
        this.data = data;
    }
}

public class BidirectionalSelectionSort {
    public static ListNode bidirectionalSelectionSort(ListNode head) {
        if (head == null || head.next == null) {
            return head; // Already sorted or empty list
        }

        ListNode start = null;
        ListNode end = null;
        ListNode sortedTail = null;

        while (sortedTail != head) {
            ListNode minPrev = null;
            ListNode min = head;
            ListNode maxPrev = null;
            ListNode max = head;
            ListNode curr = head;

            while (curr.next != sortedTail) {
                if (curr.data > curr.next.data) {
                    if (curr.data > max.data) {
                        max = curr;
                        maxPrev = minPrev;
                    }
                    if (curr.next.data < min.data) {
                        min = curr.next;
                        minPrev = curr;
                    }
                }
                curr = curr.next;
            }

            if (min == max) {
                break;
            }

            if (minPrev != null) {
                minPrev.next = min.next;
            } else {
                head = min.next;
            }

            if (maxPrev != null) {
                maxPrev.next = max.next;
            } else {
                head = max.next;
            }

            if (sortedTail != null) {
                sortedTail.next = min;
            }

            min.next = max;
            max.next = null;
            sortedTail = max;
        }

        return head;
    }

    public static void printList(ListNode head) {
        while (head != null) {
            System.out.print(head.data + " ");
            head = head.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(6);
        head.next = new ListNode(2);
        head.next.next = new ListNode(8);
        head.next.next.next = new ListNode(3);
        head.next.next.next.next = new ListNode(1);

        System.out.println("Original Linked List:");
        printList(head);

        head = bidirectionalSelectionSort(head);

        System.out.println("Sorted Linked List:");
        printList(head);
    }
}

私が試したこと:

int data;

文字列型に変更してみました

解決策 2

コンストラクターで「next」ノードを初期化していない場合は、「next」を null に設定できます。 このようにして、新しい「ListNode」を作成すると、「next」フィールドはデフォルトで null に設定されます。

Java
class ListNode {
    int data;
    ListNode next;

    public ListNode(int data) {
        this.data = data;
        this.next = null; 
        //Initialize the 'next' node...
    }
}

コメント

タイトルとURLをコピーしました