2016-06-01 70 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;