[ad_1]
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... } }
[ad_2]
コメント