2016-06-01 48 views
-4

如何編寫一個方法,當傳遞一個整數數組時,使用堆棧返回數組顛倒的數組?從棧中返回顛倒的數組

我是Java的總noob,請不要問我自己的嘗試,因爲我不知道從哪裏開始。任何幫助將不勝感激。

+0

你很幸運。一個堆棧是後進先出。這真的適合倒序陣列。 – Thilo

+0

@ZephyrPellerin不,它不是。 –

+1

[使用堆棧倒置數組?]可能的重複(http://stackoverflow.com/questions/28268945/reversing-an-array-using-a-stack) –

回答

0
Stack<Integer> stack = new Stack<>(); 
for (int i = 0; i < array.length; i++) { 
    stack.push(array[i]); 
} 
for (int i = 0; i < array.length; i++) { 
    array[i] = stack.pop(); 
} 
0

考慮到你是Java和數據結構的初學者。
棧是一種數據結構,它工作於LIFO(後進先出)原理。您可以將堆棧想象成CD(Compact Disks)的容器。你在那裏放了一些CD,然後當你準備接收它們時,你首先得到放在最後的CD。
就你而言,你只需從給定的數組中讀取這些項目,並將它們逐個放入堆棧。然後簡單地從堆棧中逐個獲取它們並放入一個新數組中。你會得到相反的數組。
使用推(整數項)pop()方法 java.util.Stack中類從堆棧投入和獲取最頂端項。

0

因爲堆棧是「後進先出」,所以當您從棧中彈出一個值並將其插入到一個新數組中時,它將以相反的順序結束。

int[] arr = {1, 2, 3, 4, 5}; 

坡平掉ARR並將其添加到一個新的數組值將導致:

reverse = {5, 4, 3, 2, 1}; 

彈出出值ARR使用for循環:

int[] reverse = new int[arr.length]; 

for(int i = 0; i < arr.length; i++){ 
    reverse[i] = pop(); 
} 
return reverse;