在堆栈中返回中间元素

时间:2011-08-22 22:40:54

标签: java arrays sorting linked-list

我必须创建一个方法peek MidElement,以便返回堆栈的中间元素。 所以我必须使用ArrayList或TORTOISE-HARE算法。

以下是我的类,它有一个名为peekMidElement的方法。 如何将Size()引用到ArrayList。 当我编译以下内容时,我在ArrayList.RangeCheck(UnknownSource)&获得了IndexOutOFBoundsExcption。在ArrayList.get(UnknownSource)

public class SortableStack<E extends Comparable<E>> implements ISortableStack<E> {  
        private int N;            
        private Node first;       
    private ArrayList<E> listOne = new ArrayList<E>(); 
    /* I have to reference the Stack to array list 
      which I am going use for finding the size of the stack */

    public boolean isEmpty() {  
            return first == null;  
        }  

        public int size() {  
            return N;  
        }  


    public E peekMidElement() {  
        if(listOne.size() <= 0){  
        throw new EmptyStackException();  
        }  

        return listOne.get(listOne.size()/2);  
     } 

1 个答案:

答案 0 :(得分:0)

我无法看到您提供的代码段如何在您指示的位置抛出IndexOutOfBoundsExcption。我的结论是:

  • 代码段不是实际代码(例如,它已从较大的类拼接在一起,遗漏了一些重要的细节),或者

  • 不会在您指定的地方抛出异常,或

  • ...这个类(不是线程安全的)正在多线程应用程序中使用而没有足够的同步。场景是其他一些线程在错误的时刻从listOne中删除了一堆元素。这不太可能,如果是原因,那么失败只会偶尔发生