zoukankan      html  css  js  c++  java
  • 线性表

    实现语言: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     }
  • 相关阅读:
    Python 30分钟入门——数据类型 and 控制结构
    类球多面体生成——经纬划分法
    GLUT的简洁OO封装
    Resource Acquisition Is Initialization(RAII Idiom)
    为什么operator>>(istream&, string&)能够安全地读入长度未知的字符串?
    斯坦福2014机器学习笔记六----神经网络(一)
    斯坦福2014机器学习笔记五----正则化
    斯坦福2014机器学习笔记四----逻辑回归
    斯坦福2014机器学习笔记三----多变量线性回归与梯度下降法
    斯坦福2014机器学习笔记二----梯度下降法
  • 原文地址:https://www.cnblogs.com/maduar/p/4287023.html
Copyright © 2011-2022 走看看