2014-02-14 163 views
0

我有一個使用數組的堆棧實現,我試圖將其轉換爲數組列表。數組在頂部,arrayList在底部。這兩段代碼是否做同樣的事情?我也有兩個彈出方法的一個數組和一個數組列表。但對於這一個我得到一個錯誤,溫度尚未初始化,無法找到符號溫度。任何幫助表示感謝。從堆棧轉換堆棧arrayList

USING ARRAY 
public void push(T value) 
    {  
     if(size==values.length) 
      expandCapacity(); 

     values[size] = value; 
     size++; 
    } 


USING ARRAYLIST 
public void push(T value) 
    { 

     values.add(value); 

     size++; 
    } 



USING ARRAY 
public T pop() 
    {  
     if(isEmpty()) 
      throw new RuntimeException("Attempt to pop from empty stack"); 

     size--; 
     T temp = values[size]; 
     values[size] = null; 
     return temp; 
    } 

USING ARRAYLIST 

public T pop() 
    { 
     T temp; 

     if(isEmpty()) 
      throw new RuntimeException("Attempt to pop from empty stack"); 

     size--; 

     values.add(temp); 

     values.temp = null; 
     //values[size] = null; 
     return temp; 

    } 

回答

0

push方法,爲您的陣列和ArrayList版本看起來是正確的。您的pop陣列看起來不錯。但是,popArrayList需要工作。

您遞減size,這很好,但您試圖添加temp(未初始化),這是沒有意義的。

您需要致電remove, passing the index size,它將返回您可以在pop方法中返回的必要項目。

+0

接過電話;在這種情況下它甚至沒有意義。你只需要調用'remove'。 – rgettman

+0

看起來不錯。在訪問數組或者調用'get'之前,你是否正在檢查一個空棧?就像你已經在檢查'pop'一樣? – rgettman

+0

您遺漏了堆棧跟蹤中非常重要的部分 - 異常類型和異常消息。 – rgettman