重新排列链表元素

时间:2014-11-03 05:59:58

标签: java data-structures linked-list

我是数据结构的新手,分别在链接列表和我正在尝试的链接中进行探索 实现以下目标..

1)给定一个链表,反向交替节点并在末尾追加

  Input List:  1->2->3->4->5->6
  Output List: 1->3->5->6->4->2

2)给定一个链表,反转备用节点并将它们附加到列表的末尾。额外允许的空间是O(1)

   Input List:  12->14->16->18->20
   Output List: 12->16->20->18->14

请告知逻辑,我如何在java.Thanks中预先实现这个

2 个答案:

答案 0 :(得分:0)

在这里,伙计们:这是第一个。尝试第二个类似的事情。快乐的编码.. :)

   public static void main(String[] args) {
    List<Integer> l1 = new LinkedList<Integer>();
    l1.add(1);
    l1.add(2);
    l1.add(3);
    l1.add(4);
    l1.add(5);
    l1.add(6);
    List<Integer> tempList = new LinkedList<Integer>();
    for(int i=0;i<l1.size();i=i+2){ // from 0, add alternative elements 0,2,4....
        tempList.add(l1.get(i)); 
    }

    for(int i=l1.size()-1;i>=0;i=i-2){ // from tail of LL add alternative elements n-1,n-3,..0/1
        tempList.add(l1.get(i)); 
    }

    System.out.println(tempList);
}

O / P:

[1,3,5,6,4,2]

答案 1 :(得分:0)

尝试以下方法

public static List<Integer> arrange(List<Integer> input) {

    Integer[] temp = new Integer[input.size()];

    for(int i = 0; i < input.size(); i++) {
         if(i%2 != 0) {
             temp[input.size() - (i+1)/2] = input.get(i);
        } else {
             temp[i/2] = input.get(i);
        }
    }
    return Arrays.asList(temp);
}