public void TestMergeBothEmpty() { LinkedList.Classes.LinkedList lla = new LinkedList.Classes.LinkedList(); LinkedList.Classes.LinkedList llb = new LinkedList.Classes.LinkedList(); Node head = Program.MergeList(lla, llb); Assert.Null(head); }
public void TestMergeSecondEmpty() { LinkedList.Classes.LinkedList lla = new LinkedList.Classes.LinkedList(); LinkedList.Classes.LinkedList llb = new LinkedList.Classes.LinkedList(); lla.Append(1); lla.Append(3); Node head = Program.MergeList(lla, llb); Assert.Equal(3, head.Next.Value); }
public void TestMergeFirstEmpty() { LinkedList.Classes.LinkedList lla = new LinkedList.Classes.LinkedList(); LinkedList.Classes.LinkedList llb = new LinkedList.Classes.LinkedList(); llb.Append(2); llb.Append(4); Node head = Program.MergeList(lla, llb); Assert.Equal(4, head.Next.Value); }
public void TestMergeSecondLong() { LinkedList.Classes.LinkedList lla = new LinkedList.Classes.LinkedList(); LinkedList.Classes.LinkedList llb = new LinkedList.Classes.LinkedList(); lla.Append(1); llb.Append(2); lla.Append(3); llb.Append(4); llb.Append(5); llb.Append(6); Node head = Program.MergeList(lla, llb); Assert.Equal(6, head.Next.Next.Next.Next.Next.Value); }
public static Node MergeList(LinkedList.Classes.LinkedList lla, LinkedList.Classes.LinkedList llb) { if (lla.Head == null || llb.Head == null) { if (lla.Head != null) { return(lla.Head); } else if (llb.Head != null) { return(llb.Head); } else { return(null); } } Node curra = lla.Head; Node currb = llb.Head; while (curra.Next != null && currb.Next != null) { Node nexta = curra.Next; Node nextb = currb.Next; curra.Next = currb; currb.Next = nexta; curra = nexta; currb = nextb; } if (curra.Next == null) { curra.Next = currb; } if (currb.Next == null) { currb.Next = curra.Next; curra.Next = currb; } return(lla.Head); }