Java中使用数组实现栈数据结构实例
栈是Java语言中最重要的数据结构之一,它的实现,至少应该包括以下几个方法:
1.pop()出栈操作,弹出栈顶元素。
2.push(Ee)入栈操作
3.peek()查看栈顶元素
4.isEmpty()栈是否为空
另外,实现一个栈,还应该考虑到几个问题:
1.栈的初始大小以及栈满以后如何新增栈空间
2.对栈进行更新时需要进行同步
简单示例,使用数组实现栈,代码如下:
publicclassStack<E>{
//Java不支持泛型数组,如需使用,请使用Java提供的容器
privateObject[]stack;
//栈的默认初始大小
privatestaticfinalintINIT_SIZE=2;
//栈顶索引
privateintindex;
publicStack(){
stack=newObject[INIT_SIZE];
index=-1;
}
/**
*构造方法
*
*@paraminitSize
* 栈的初始大小
*/
publicStack(intinitSize){
if(initSize<0){
thrownewIllegalArgumentException();
}
stack=newObject[initSize];
index=-1;
}
/**
*出栈操作
*
*@return栈顶对象
*/
publicsynchronizedEpop(){
if(!isEmpty()){
Etemp=peek();
stack[index--]=null;
returntemp;
}
returnnull;
}
/**
*入栈操作
*
*@paramobj
* 等待入栈的对象
*/
publicsynchronizedvoidpush(Eobj){
if(isFull()){
Object[]temp=stack;
//如果栈满,则创建空间为当前栈空间两倍的栈
stack=newObject[2*stack.length];
System.arraycopy(temp,0,stack,0,temp.length);
}
stack[++index]=obj;
}
/**
*查看栈顶对象
*
*@return栈顶对象
*/
publicEpeek(){
if(!isEmpty()){
return(E)stack[index];
}
returnnull;
}
/**
*查看栈是否为空
*
*@return如果栈为空返回true,否则返回false
*/
publicbooleanisEmpty(){
returnindex==-1;
}
/**
*查看栈是否满
*
*@return如果栈满返回true,否则返回false
*/
publicbooleanisFull(){
returnindex>=stack.length-1;
}
}
最后说明,Java中实现了栈(java.util.Stack)的数据结构,它是通过继承Vector类实现的,一般情况下我们直接拿来用就行了。
相关文章
- java sortedset用法_Java SortedSet headSet()用法及代码示例[通俗易懂]
- java对象组声明_如何在Java中声明对象数组?
- java数组反转,Java数组反转
- java二维数组试题_Java二维数组及习题总结
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- java循环语句_Java中的循环语句
- java启动器_JAVA基础:Java 启动器如何查找类
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java 随机数算法_Java随机数算法原理与实现方法实例详解
- 【说站】java数组中元素求和的实例
- Java 集合 Collections
- Java入门代码_java编程自学网
- java socket详解_Java Socket 编程原理及教程「建议收藏」
- JAVA遍历数组的三种方法_java遍历object数组
- MySQL与Java的强强联合:开启智能数据库时代(mysql和java)
- Linux下Java开发入门指南(linux下java开发)
- Java连接SQL Server:实现数据库完美对接(java链接sqlserver)
- 实现Java实现的Redis封装类:强化Redis技术支持(redis封装类java)
- java字符串替换排序实例
- Java中实现双数组Trie树实例