Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新排列链表元素_Java_Data Structures_Linked List - Fatal编程技术网

Java 重新排列链表元素

Java 重新排列链表元素,java,data-structures,linked-list,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) 请告知逻辑以及如何在java中实现此功能。提前感谢您,伙计:这是第一个。。对第二个尝试类似的方法。快乐编码

我不熟悉数据结构,特别是在链表中探索它,我正在尝试使用链表 要实现以下目标

1) 给定一个链表,反转备用节点并在末尾追加

  Input List:  1->2->3->4->5->6
  Output List: 1->3->5->6->4->2
2) 给定一个链表,反转备用节点并将其附加到列表的末尾。额外允许的空间为O(1)


请告知逻辑以及如何在java中实现此功能。提前感谢您,伙计:这是第一个。。对第二个尝试类似的方法。快乐编码…)

publicstaticvoidmain(字符串[]args){
列表l1=新链接列表();
l1.加入(1);
l1.加入(2);
l1.加入(3);
l1.加入(4);
l1.加入(5);
l1.加入(6);
列表模板列表=新建LinkedList();
对于(inti=0;i=0;i=i-2){//从LL的尾部添加可选元素n-1,n-3,…0/1
templast.add(l1.get(i));
}
System.out.println(圣殿骑士);
}
O/p:

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

试试下面的方法

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);
}
公共静态列表排列(列表输入){
整数[]临时=新整数[input.size()];
对于(int i=0;i
您的问题标题具有误导性。。这不是洗牌。您正在根据某些标准重新排列元素。@TheLostMind potato?有什么区别?@Lostmind。。。谢谢你改变了主意subject@tuntutnsdsds对我来说,它们是一样的thing@tuntutnsdsds-您使用的是默认LinkedList实现还是您自己的自定义实现?解释发生了什么?至少我有some@KickButtowski-在注释中添加了解释:)
   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);
}
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);
}