自己用Java实现一个“栈”类,包括push和pop基本操作

“栈”是一种“后进先出”的方式存放数据的数据结构。

自己用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