(链表)12-单链表的排序

 1 import java.util.*;
 2 
 3 /*
 4  * public class ListNode {
 5  *   int val;
 6  *   ListNode next = null;
 7  *   public ListNode(int val) {
 8  *     this.val = val;
 9  *   }
10  * }
11  */
12 public class Solution {
13     /**
14      * @param head 输入链表的头结点
15      * @return 排序后的链表头节点
16      */
17     public ListNode sortInList (ListNode head) {
18         // 申请临时数组用于排序
19         ArrayList<Integer> nums = new ArrayList();
20         // 申请临时节点作为遍历指针
21         ListNode p = head;
22         // 遍历链表将节点值加入数组
23         while(p != null){
24             nums.add(p.val);
25             p = p.next;
26         }
27         // 对数组元素排序
28         Collections.sort(nums);
29         // 将临时节点指向头结点用于排序后的赋值
30         p = head;
31         // 遍历数组赋值
32         for(int i = 0; i < nums.size(); i++){
33             // 将数组元素依次加入链表
34             p.val = nums.get(i);
35             p = p.next;
36         }
37         return head;
38     }
39 }

 

posted @ 2023-11-14 23:27  StringBuilder  阅读(22)  评论(0)    收藏  举报