“棧”是一種“後進先出”的方式存放數據的數據結構。
今天小樹動手寫了一個簡單的棧類(存儲int值),代碼如下:
(1)StackOfInteger類:
public class StackOfIntegers {
private int[]elements;
private int elementSize;
private final static int DEFAULT_CAPACITY=10;
public StackOfIntegers(int capacity)
{
elements=new int[capacity];
}
public StackOfIntegers()
{
this(DEFAULT_CAPACITY);
}
public void push(int value)//進棧
{
if(elementSize>elements.length)
{
int []temp=new int[elements.length*2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements=temp;
}
elements[elementSize++]=value;
}
public int pop()//出棧,出棧前必須調用empty()判斷棧是否爲空
{
return elements[--elementSize];
}
public boolean empty()//判斷棧是否爲空
{
return elementSize==0;
}
public int getSize()//獲取棧中元素個數
{
return elementSize;
}
public int peek()//獲取當前棧頂元素
{
return elements[elementSize-1];
}
}
(2)調用StackOfInteger進行棧的操作:
import java.util.*;
public class StackOfIntegerTest {
public static void main(String []args){
StackOfIntegers stack=new StackOfIntegers(15);
int []A=new int [15];
for(int i=0;i<A.length;i++)
{
A[i]=i;
}
for(int j=0;j<A.length;j++)
{
stack.push(A[j]);
}
while(!stack.empty())
{
System.out.print(stack.pop()+" ");
}
}
}
運行結果:
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0