创建一个LinkedList,然后在其中插入多个值,确保每个值都插入到List中间(偶数中间两个数之一,奇数在正中间)

时间:2021-10-03 03:08:12

这是Thinking in java 中的一道题,下面是我的解决方案:

 1 package test;
 2 
 3 import java.util.LinkedList;
 4 import java.util.ListIterator;
 5 
 6 /**
 7  * 
 8  * 创建一个LinkedList,然后在其中插入多个值,确保每个值都插入到List中间(偶数中间两个数之一,奇数在正中间)
 9  *
10  */
11 public class InsertInMiddle {
12     public static void main(String[] args) {
13         LinkedList<Integer> list = new LinkedList<Integer>() ;
14         Integer[] integers = new Integer[]{1,2,3,4,5,6}  ;
15         insertInMiddle(list,integers) ;
16     }
17     public static void insertInMiddle(LinkedList<Integer> list , Integer[] integers ){
18         ListIterator<Integer> listIterator = list.listIterator() ;
19         for(Integer integer : integers ){
20             if(list.size() == 0 ){
21                 listIterator.add(integer);
22             }else{
23                 if((list.size() & 1) == 0 ){
24                 listIterator.previous() ;
25                 listIterator.add(integer);
26                 }else{
27                     listIterator.add(integer);
28                 }
29             }
30         }
31         System.out.println(list);
32     }
33 }

我的思路是:

ListIterator“指针”总是指向中间的新插入的元素,当发现当前列表长度为奇数时,可以直接将新元素插入到当前指针所指元素后边,如果当前列表长度为偶数时,需要将

这个指针向前移动一位,然后再将新的元素插入到指针所指元素的后边。

 百度上搜索了一下,才发现我似乎傻逼了:

 1 import java.util.LinkedList;  
 2 import java.util.ListIterator;  
 3   
 4 //创建一个空的LinkedList<Integer>,通过使用ListIterator,将若干个Integer插入这个List中,插入时,  
 5 //总是将它们插入到List的中间  
 6   
 7 public class Ex14 {  
 8     static void addMiddle(LinkedList<Integer> l,Integer[] ia){  
 9         for(Integer i : ia){  
10             ListIterator<Integer> it = l.listIterator((l.size()/2));  
11             it.add(i);  
12             System.out.println(l);  
13         }  
14     }  
15     public static void main(String[] args) {  
16         LinkedList<Integer> li = new LinkedList<Integer>();  
17         Integer[] x = {0,1,2,3, 4, 5, 6, 7};  
18         Ex14.addMiddle(li, x);  
19     }  
20   
21 }  

这个多简单粗暴~~~