将元素存储到另一个列表中

时间:2015-10-23 15:40:01

标签: java list data-structures

需要一些帮助。在我的作业上工作,我必须使用ArrayDeque对列表进行排序。我可以检查第一个和最后一个元素。 我有一个列表,例如

int[] list = {6, 8, 7};

第一个元素 - 6 - 将进入空数组,没问题。 第二个元素 - 8 - 将在6后面,所以我们将[6,8],然后是7.因为我不能把它放在6的前面,我不能把它放在8后面。所以我必须将7存储到其他列表中,以后我可以返回。我怎么做?任何提示都是受欢迎的。 谢谢。 (对不起,如果以前曾经问过这个问题,但无法找到解决方案)

3 个答案:

答案 0 :(得分:0)

您可以做的是将索引x处的int值存储到局部变量中,然后遍历数组,查看是否存在低于当前存储值的值,如果是,则变为新的较低值。完成数组后,您可以将其输入新数组。

答案 1 :(得分:0)

首先让我澄清你的约束。你只能:

  • 获取第一个元素的值
  • 删除第一个元素
  • 在第一个元素之前添加
  • 获取最后一个元素的值
  • 删除最后一个元素
  • 追加到最后一个元素
  • 之后

使用堆栈将数组中的值添加到上述结构中的算法:

  • 表示数组中的每个值
  • 如果该值小于套牌中的第一个值 - >前置
  • 如果该值大于套牌中的最后一个值,则为>附加
  • 如果值更接近第一个,则为:
    • 删除第一个元素并重复推入堆栈,只要第一个元素较小
    • 即可
    • 将值添加到套牌
    • 当堆栈不为空时,从它弹出并前置到卡座
  • 否则:
    • 删除最后一个元素并重复推入堆栈,只要最后一个元素更大
    • 将值附加到套牌
    • 当堆栈不为空时,从它弹出并附加到卡座

如果不允许使用堆栈,但允许使用递归,则可以将调用堆栈用于同一端

答案 2 :(得分:0)

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    ArrayDeque<Integer> container = new ArrayDeque<>();
    ArrayDeque<Integer> container2 = new ArrayDeque<>();
    System.out.println("Please enter 10 number with space");
    for(int i=0;i<10;i++){
        container.add(sc.nextInt());
    }

    while (!isSorted(container.isEmpty()?container2:container)) {
        while (!container.isEmpty()) {
            int a = container.poll();
            if(container.peek()!=null && a<container.peek()){
                if(container2.peek()!=null && container2.peek()>container.peek()){
                    container2.addFirst(a);
                }else{
                    container2.addLast(a);
                }
            }else if(container.peek()!=null){
                if(container2.peek()!=null && container2.peek()>container.peek()){
                    container2.addFirst(container.poll());
                }else{
                    container2.addLast(container.poll());
                }
                container.addFirst(a);
            }else{
                container2.addLast(a);
            }
        }
        while (!container2.isEmpty()) {
            int a = container2.poll();
            if(container2.peek()!=null && a<container2.peek()){
                if(container.peek()!=null && container.peek()>container2.peek()){
                    container.addFirst(a);
                }else{
                    container.addLast(a);
                }
            }else if(container2.peek()!=null){
                if(container.peek()!=null && container.peek()>container2.peek()){
                    container.addFirst(container2.poll());
                }else{
                    container.addLast(container2.poll());
                }
                container2.addFirst(a);
            }else{
                container.addLast(a);
            }
        }
    }
    while (!container.isEmpty()) {
        System.out.println(container.poll());
    }
    System.out.println("---------------------------");
    while (!container2.isEmpty()) {
        System.out.println(container2.poll());
    }
}
  static boolean isSorted(ArrayDeque<Integer> con){
     boolean answer = true;
    for(int i=0;i<con.size()-1;i++){
        int a = con.poll();
        con.addLast(a);
        if(con.peek()!=null && a>con.peek()) answer= false;
    }
     con.addLast(con.poll());
    return answer;
}