Exemplo n.º 1
0
        private static void MergeSortedList(SingleLinkedList result, SingleLinkedList a, SingleLinkedList b)
        {
            if (a.Head != null && b.Head != null)
            {
                if (a.Head.Data <= b.Head.Data)
                {
                    result.MoveHeadToTail(a);
                }
                else
                {
                    result.MoveHeadToTail(b);
                }

                MergeSortedList(result, a, b);
            }
            else
            {
                if (a.Head != null)
                {
                    result.MoveHeadToTail(a);
                    MergeSortedList(result, a, b);
                }
                else if (b.Head != null)
                {
                    result.MoveHeadToTail(b);
                    MergeSortedList(result, a, b);
                }
            }
        }
Exemplo n.º 2
0
        public static SingleLinkedList ShuffleMerge(SingleLinkedList a, SingleLinkedList b)
        {
            var result = new SingleLinkedList();

            while (a.Head != null)
            {
                result.MoveHeadToTail(a);
                if (b.Head != null)
                {
                    result.MoveHeadToTail(b);
                }
            }

            while (b.Head != null)
            {
                result.MoveHeadToTail(b);
            }

            return(result);
        }