自己用Java实现一个“栈”类,包括push和pop基本操作
“栈”是一种“后进先出”的方式存放数据的数据结构。
今天小树动手写了一个简单的栈类(存储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];
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
(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()+" ");
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
运行结果:
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0