线性表

实现语言: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     }
原文地址:https://www.cnblogs.com/maduar/p/4287023.html