Sorting a linked list

前端 未结 8 746
-上瘾入骨i
-上瘾入骨i 2020-11-29 09:26

I have written a basic linked list class in C#. It has a Node object, which (obviously) represents every node in the list.

The code does not use IEnumerable, however

8条回答
  •  野性不改
    2020-11-29 10:19

    public LinkedListNode Sort2(LinkedListNode head, int count)
        {
            var cur = head;
            var prev = cur;
            var min = cur;
            var minprev = min;
    
            LinkedListNode newHead = null;
            LinkedListNode newTail = newHead;
    
            for (int i = 0; i < count; i++)
            {
                cur = head;
                min = cur;
                minprev = min;
    
                while (cur != null)
                {
                    if (cur.Value < min.Value)
                    {
                        min = cur;
                        minprev = prev;
                    }
                    prev = cur;
                    cur = cur.Next;
                }
    
                if (min == head)
                    head = head.Next;
                else if (min.Next == null)
                    minprev.Next = null;
                else
                    minprev.Next = minprev.Next.Next;
    
                if (newHead != null)
                {
                    newTail.Next = min;
                    newTail = newTail.Next;
                }
                else
                {
                    newHead = min;
                    newTail = newHead;
                }
            }
            return newHead;
        }
    

提交回复
热议问题