数据结构|用java自己手写实现一个栈
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据结构|用java自己手写实现一个栈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1770字,纯文字阅读大概需要3分钟。
内容图文
![数据结构|用java自己手写实现一个栈](/upload/InfoBanner/zyjiaocheng/601/917004ca01d049e2b13d038a14b660e7.jpg)
javaDEMO
本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~ https://www.javastudy.cloud
用java实现一个栈
栈主要有以下特性和操作:
1.先进后出
2.有入栈和出栈的操作
因为我们demo中也只先完成这两个简单的特性和操作
代码如下:
/**
* @Author https://www.javastudy.cloud
* @CreateTime 2019/11/6
**/
public class StackDemo<E> {
/** 底层使用一个泛型数组做存储 */
private E[] items;
private int top;
private int capacity;
public StackDemo() {
//会调用下面一个构造方法,初始化一个长度为10的数组
this(10);
}
public StackDemo(int i){
this.capacity=i;
this.items=(E[])new Object [this.capacity];
this.top=0;
}
/**
* 入栈操作
*/
public void push(E e) throws Exception{
if(top!=capacity){
items[top++]=e;
//判断数据是不是已经满了,看需不需要扩容
resize();
}else{
throw new Exception();
}
}
/**
* 出栈操作
*/
public E pop() throws Exception{
if(top==0){
throw new Exception();
}else{
E ret=items[--top];
items[top]=null;
return ret;
}
}
/**
* resize操作,把数组扩大两倍
*/
public void resize(){
// 如果top和capacity相等的话,说明满了
if(top==capacity){
// 把范围括大2倍
this.capacity = this.capacity*2;
// new一个新数组
E[] newItems = (E[])new Object [this.capacity];
// 转移老数据
System.arraycopy(items,0,newItems,0,items.length);
// 把新的数组当成底层的存储
this.items = newItems;
}
}
public static void main(String[] args) {
StackDemo<String> stack = new StackDemo<>(2);
try {
stack.push("first");
stack.push("second");
stack.push("third");
stack.push("four");
String pop = stack.pop();
System.out.println(pop);
} catch (Exception e) {
e.printStackTrace();
}
}
}
DEMO总评
栈是基础也是极其重要的数据结构,不仅仅要明白栈的特性,同时也要具备能手写一个栈的能力,在写的过程中才能注意到那些可能有坑的地方,才能注意到那些小细节,如System.arraycopy的使用,以及在多线程情况下的风险, 加油吧,少年!
内容总结
以上是互联网集市为您收集整理的数据结构|用java自己手写实现一个栈全部内容,希望文章能够帮你解决数据结构|用java自己手写实现一个栈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。