sort-list 1.0.0
Sort List
Loading...
Searching...
No Matches
Solution Class Reference

Public Member Functions

ListNodemerge (ListNode *head_left, ListNode *head_right)
 
ListNodesortList (ListNode *head)
 

Detailed Description

Definition at line 36 of file main.cpp.

Member Function Documentation

◆ merge()

ListNode * Solution::merge ( ListNode head_left,
ListNode head_right 
)
inline

Definition at line 39 of file main.cpp.

40 {
41 // base case
42 if (head_left == NULL)
43 return head_right;
44 else if (head_right == NULL)
45 return head_left;
46
47 // recursive
48 if (head_left->val < head_right->val)
49 {
50 head_left->next = merge(head_left->next, head_right);
51 return head_left;
52 }
53 else
54 {
55 head_right->next = merge(head_right->next, head_left);
56 return head_right;
57 }
58 }
ListNode * merge(ListNode *head_left, ListNode *head_right)
Definition main.cpp:39
int val
Definition main.cpp:10
ListNode * next
Definition main.cpp:11

References merge(), ListNode::next, and ListNode::val.

Referenced by merge(), and sortList().

◆ sortList()

ListNode * Solution::sortList ( ListNode head)
inline

Definition at line 60 of file main.cpp.

61 {
62 if (!head)
63 return NULL;
64
65 // base case
66 if (head->next == NULL)
67 return head;
68
69 // recursive case
70 ListNode* middle = head; // slow
71 ListNode* middle_prev = head;
72 ListNode* right = head; // fast
73
74 while (right->next != NULL)
75 {
76 middle_prev = middle;
77 middle = middle->next;
78 if (right->next->next)
79 right = right->next->next;
80 else
81 right = right->next;
82 }
83 middle_prev->next = NULL;
84
85 ListNode* head_left = sortList(head);
86 ListNode* head_right = sortList(middle);
87 head_left = merge(head_left, head_right);
88 return head_left;
89 }
ListNode * sortList(ListNode *head)
Definition main.cpp:60
Definition for singly-linked list.
Definition main.cpp:9

References merge(), ListNode::next, and sortList().

Referenced by main(), and sortList().


The documentation for this class was generated from the following file: