实现语言:JAVA
1.问题描述:假设利用两个线性表分别比哦是两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A U B。这就要求对线性表做如下操作:
扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。
只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中进行查访,若不存在,则插入之。
java代码
1 List list01=new ArrayList(); 2 List list02=new ArrayList(); 3 list02.add(33); 4 list02.add(44); 5 list02.add(55); 6 boolean bool=list01.isEmpty(); 7 list01.add(11); 8 list01.add(22); 9 list01.add(33); 10 11 for(int i=0;i<list02.size();i++){ 12 if(!list01.contains(list02.get(i))){ 13 list01.add(list02.get(i)); 14 } 15 }
说明:ArrayList()构造一个初始容量为10的空列别表。加入list02的元素后,list01的size为5,不超过10,所以不需要扩表。
因为已知list02表不为空,且size为3,所以未对list02做判断。
2.问题描述:已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。
例 LA = (3,5,8,11)
LB = (2,6,8,9,11,15,20)
则 LC = (2,3,5,6,8,8,9,11,11,15,20)
1 List list1=new ArrayList(); 2 List list2=new ArrayList(); 3 List list3 = new ArrayList(); 4 int[] arr1={3,5,8,11}; 5 int[] arr2={2,6,8,9,11,15,20}; 6 //将arr1的数据加载到list1 7 for(int i=0;i<arr1.length;i++){ 8 list1.add(arr1[i]); 9 } 10 //将arr2的数据加载list2 11 for(int i=0;i<arr2.length;i++){ 12 list2.add(arr2[i]); 13 } 14 15 int i = 0; 16 int j = 0; 17 int k = 0; 18 //每次list3执行一次add操作,k的值加1 19 while(i<list1.size() && j<list2.size()){ 20 21 int aaa=(Integer) list1.get(i); 22 int bbb=(Integer) list2.get(j); 23 //如果list1的第i位元素小于或等于list2的第j位元素 24 //将list1的第i为元素add到list3 25 if(aaa<=bbb){ 26 list3.add(aaa); 27 i++; 28 k++; 29 } 30 //如果list1的第i位元素大于list2的第j位元素 31 //将list2的第j为元素add到list3 32 else{ 33 list3.add(bbb); 34 j++; 35 k++; 36 } 37 System.out.println("list3 = "+list3); 38 } 39 40 while(i<list1.size()){ 41 list3.add(k++,list3.get(i)); 42 i++; 43 } 44 while(j<list2.size()){ 45 list3.add(k++,list2.get(j)); 46 j++; 47 } 48 System.out.println("Last list3 = "+list3);
3.问题描述:(A - B) U (B - A)
1):自己写的。。
1 List list1=new ArrayList(); 2 List list2=new ArrayList(); 3 List list3=new ArrayList(); 4 int[] arr1={3,5,8,11}; 5 int[] arr2={2,6,8,9,11,15,20}; 6 //将arr1的数据加载到list1 7 for(int i=0;i<arr1.length;i++){ 8 list1.add(arr1[i]); 9 } 10 list1.add("haha"); 11 //将arr2的数据加载list2 12 for(int i=0;i<arr2.length;i++){ 13 list2.add(arr2[i]); 14 } 15 list2.add("haha"); 16 list2.add("hehe"); 17 list3.addAll(list2); 18 boolean bool; 19 int count; 20 for(int i=0;i<list1.size();i++){ 21 bool=false; 22 count=0; 23 for(int j=0;j<list2.size();j++){ 24 if(list1.get(i)!=list2.get(j)){ 25 count++; 26 } 27 } 28 if(count==list2.size()){ 29 bool=true; 30 } 31 if(bool){ 32 list3.add(list1.get(i)); 33 } 34 } 35 System.out.println(list3);
2):调用contains函数
1 List list1=new ArrayList(); 2 List list2=new ArrayList(); 3 List list3=new ArrayList(); 4 int[] arr1={3,5,8,11}; 5 int[] arr2={2,6,8,9,11,15,20}; 6 //将arr1的数据加载到list1 7 for(int i=0;i<arr1.length;i++){ 8 list1.add(arr1[i]); 9 } 10 list1.add("haha"); 11 //将arr2的数据加载list2 12 for(int i=0;i<arr2.length;i++){ 13 list2.add(arr2[i]); 14 } 15 list2.add("haha"); 16 list2.add("hehe"); 17 list2.add("run"); 18 list3.addAll(list2); 19 for(int i=0;i<list1.size();i++){ 20 if(!list3.contains(list1.get(i))){ 21 list3.add(list1.get(i)); 22 } 23 } 24 System.out.println(list3);
4.
1 public static void printLots(List L,List<Integer> P){ 2 Iterator<Integer> itr=P.iterator(); 3 int cc; 4 int count=1; 5 while(itr.hasNext()){ 6 cc=itr.next(); 7 if(cc<=0){ 8 System.out.println("错误,第"+count+"位为负数:"+cc); 9 }else{ 10 System.out.println(L.get(cc-1)); 11 ++count; 12 13 } 14 } 15 }