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); } } }
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); }