import java.util.*(引入包含栈类的头文件)
相关函数介绍
boolean empty()
测试堆栈是否为空。
E peek()
查看堆栈顶部的对象,但不从堆栈中移除它。
E pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item)
把项压入堆栈顶部。
int search(Object o)
返回对象在堆栈中的位置,以 1 为基数。
Java栈的实现public
class
MyStack
{
//定义一个堆栈类
int[]
array
//用int数组来保存数据,根据需要可以换类型
int
s_size
//定义堆栈的宽度
public
MyStack(int
i){
//定义一个带参数构造器
array=new
int[i]
//动态定义数组的长度
s_size=0
//堆栈的默认宽度为0
}
public
MyStack(){
//默认构造器
this(50)
//默认构造器可容纳50个元素
}
public
void
push(int
i){
//压栈
array[this.s_size]=i
this.s_size++
}
public
int
pop(){
//从堆栈中取元素,从栈顶开始取
if(this.s_size!=0){
int
t=array[s_size-1]
//用中间变量保存栈顶的元素
array[s_size-1]=0
//取完元素该位置设为0
s_size--
//栈的大小减1
return
t
//返回栈顶元素
}else{
System.out.println("This
stack
is
empty")
//当栈为空时显示提示信息,返回0
return
0
}
}
public
boolean
isEmpty(){
//判断栈是否为空
return
this.s_size==0
}
public
int
top(){
//从栈顶取值,功能和
pop()
方法一样
if(!this.isEmpty()){
int
t=array[this.s_size-1]
array[this.s_size-1]=0
this.s_size--
return
t
}else{
System.out.println("This
stack
is
empty!")
return
0
}
}
public
void
printAll(){
//打印出堆栈中的所有元素的值,不是取出,元素依然在堆栈里
if(!this.isEmpty()){
for(int
i=this.s_size
-
1i>=0i--){
System.out.println(array[i])
}
}
}
//下面是测试代码
public
static
void
main(String[]
args){
MyStack
stack=new
MyStack()
stack.push(4)
stack.push(5)
stack.push(6)
stack.push(7)
//System.out.println(stack.isEmpty())
stack.printAll()
System.out.println("===========")
System.out.println(stack.top())
System.out.println(stack.top())
System.out.println(stack.top())
System.out.println(stack.top())
System.out.println(stack.top())
}
}