mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
379 B
29 lines
379 B
4 years ago
|
package correct
|
||
5 years ago
|
|
||
|
func ListSort(l *NodeI) *NodeI {
|
||
4 years ago
|
head := l
|
||
|
if head == nil {
|
||
5 years ago
|
return nil
|
||
|
}
|
||
4 years ago
|
head.Next = ListSort(head.Next)
|
||
5 years ago
|
|
||
4 years ago
|
if head.Next != nil && head.Data > head.Next.Data {
|
||
|
head = move(head)
|
||
5 years ago
|
}
|
||
4 years ago
|
return head
|
||
5 years ago
|
}
|
||
|
|
||
|
func move(l *NodeI) *NodeI {
|
||
|
p := l
|
||
|
n := l.Next
|
||
|
ret := n
|
||
|
|
||
|
for n != nil && l.Data > n.Data {
|
||
|
p = n
|
||
|
n = n.Next
|
||
|
}
|
||
|
p.Next = l
|
||
|
l.Next = n
|
||
|
return ret
|
||
|
}
|