La,Lb为两个非递减的链表,Lc按照非递减的顺序将La与Lb合并...
合并算法实现如下:
public void MergeList(List<Integer> La,List<Integer> Lb,List<Integer> Lc){ int i = 0; int j = 0; int k = 0; int La_Len = La.size(); int Lb_Len = Lb.size(); while(i < La_Len && j < Lb_Len){ if(La.get(i) <= Lb.get(j)){ Lc.add(La.get(i)); i++;k++; }else{ Lc.add(Lb.get(j)); j++;k++; } } while(i < La_Len){ Lc.add(La.get(i)); i++; } while(j < Lb_Len){ Lc.add(Lb.get(j)); j++; } }
完整的运行代码如下:
import java.util.ArrayList; import java.util.List; public class MergeListExample { //the elements in the list La and Lb are nondecreament //now merge the two LinkList.... public void MergeList(List<Integer> La,List<Integer> Lb,List<Integer> Lc){ int i = 0; int j = 0; int k = 0; int La_Len = La.size(); int Lb_Len = Lb.size(); while(i < La_Len && j < Lb_Len){ if(La.get(i) <= Lb.get(j)){ Lc.add(La.get(i)); i++;k++; }else{ Lc.add(Lb.get(j)); j++;k++; } } while(i < La_Len){ Lc.add(La.get(i)); i++; } while(j < Lb_Len){ Lc.add(Lb.get(j)); j++; } } public static void main(String[] args){ MergeListExample me = new MergeListExample(); List<Integer> La = new ArrayList<Integer>(); List<Integer> Lb = new ArrayList<Integer>(); List<Integer> Lc = new ArrayList<Integer>(); //La中的元素为:3,5,8,11;Lb中的元素为:2,6,8,9,11,15,20 La.add(3); La.add(5); La.add(8); La.add(11); Lb.add(2); Lb.add(6); Lb.add(8); Lb.add(9); Lb.add(11); Lb.add(15); Lb.add(20); me.MergeList(La, Lb, Lc); for(int i = 0;i < Lc.size();i++){ System.out.println(Lc.get(i)); } } }
运行结果为:
2
3
5
6
8
8
9
11
11
15
20