合并两个已排序的链接列表

时间:2017-05-05 07:17:13

标签: algorithm python-3.x linked-list

假设列表'A'是1-> 3-> 5并且列表'B'是4-> 6-> 7 你将如何处理合并它们的条件,它们需要在合并后进行排序 我想分享一下我对此的看法,如果需要改进,请告诉我,

String

请查看此内容并帮我即兴创作

2 个答案:

答案 0 :(得分:1)

Node MergeLists(Node list1, Node list2) {
  if (list1 == null) return list2;
  if (list2 == null) return list1;

  if (list1.data < list2.data) {
    list1.next = MergeLists(list1.next, list2);
    return list1;
  } else {
    list2.next = MergeLists(list2.next, list1);
    return list2;
  }
}

来自Interview: Merging two Sorted Singly Linked List

我认为你不会发现比这种递归更清晰的算法。

如果您想以迭代的方式进行,您在我链接到您的帖子中也有另一个答案。

答案 1 :(得分:0)

除了接受的答案,我们还可以使用迭代方法解决这个问题。

Node MergeLists(Node list1, Node list2) {
  if (list1 == null) return list2;
  if (list2 == null) return list1;

  Node head;
  if (list1.data < list2.data) {
    head = list1;
  } else {
    head = list2;
    list2 = list1;
    list1 = head;
  }
  while(list1.next != null) {
    if (list1.next.data > list2.data) {
      Node tmp = list1.next;
      list1.next = list2;
      list2 = tmp;
    }
    list1 = list1.next;
  } 
  list1.next = list2;
  return head;
}