数据结构算法2.2 链表的合并

 

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


 

你可能感兴趣的:(数据结构,算法,String,Class,import,merge)