自定义实现的一个简单的栈结构
来源:互联网 发布:淘宝网首页官网登录 编辑:程序博客网 时间:2024/05/13 18:33
package testJava;import java.util.Arrays;public class MyStack<T> {//设置栈的默认大小private static int DEFAULT_SIZE=3;//当前栈中的元首private int size=0;//每次需要扩展的容量private int capacity=0;//永远指向可添加元素的位置private int index=0; private Object[] array;public MyStack(){this.capacity=this.DEFAULT_SIZE;array=new Object[this.capacity];}//自定义栈大小public MyStack(int capacity){this.capacity=capacity;array=new Object[this.capacity];}//判断栈是否为空public boolean isEmpty() {return size==0;}//查看栈顶元素,并不出栈public T peek() {return (T)this.array[this.index-1];}//出栈public T pop() {index--;T t= (T)this.array[this.index];this.array[this.index]=null;this.size--;return t;}//压栈public void push(T t) {if (this.size<this.capacity) {this.array[this.index]=t;this.index++;this.size++;}else {enlarge();this.array[this.index]=t;this.index++;this.size++;}}//扩充容量,然后把原始数据复制到新数组中,然后再赋值回array数组public void enlarge(){System.out.println("enlarge----");//设置新数组扩充的大小this.capacity=this.capacity+this.DEFAULT_SIZE;Object[] temp=new Object[this.capacity];//把原始数据复制到新的数组中System.arraycopy(array, 0, temp, 0, array.length);//清空原始数据的值Arrays.fill(array, null);//把新的数组再赋值回原始数组this.array=temp;}//清空栈数据,让数组成为初始状态public void clear(){Arrays.fill(array, null);this.index=0;this.size=0;this.capacity=this.DEFAULT_SIZE;//重新创建一个数组array=new Object[this.capacity];}//计算当前的元素个数public int count() {return this.size;}public static void main(String[] args) {MyStack<String> myStack = new MyStack<String>();System.out.println("判断数组是否为空:"+myStack.isEmpty());myStack.push("a");myStack.push("b");myStack.push("c");System.out.println("判断数组的元素数量:"+myStack.count());System.out.println("查看栈顶的元素:"+myStack.peek());System.out.println("判断数组的元素数量:"+myStack.count());myStack.push("d");System.out.println("判断数组的元素数量:"+myStack.count());System.out.println("出栈操作:"+myStack.pop());System.out.println("出栈操作:"+myStack.pop());System.out.println("出栈操作:"+myStack.pop());System.out.println("出栈操作:"+myStack.pop());System.out.println("判断数组是否为空:"+myStack.isEmpty());myStack.clear();System.out.println("this.size="+myStack.count()+","+"this.capacity="+myStack.capacity);}}
0 0
- 自定义实现的一个简单的栈结构
- 一个简单的自定义ClassLoader的实现
- 一个简单的自定义ClassLoader的实现
- 一个简单的自定义注解的实现
- 一个简单的自定义注解的实现
- Java实现一个简单的栈结构---Strack
- 一个简单的自定义EditText控件实现
- 实现一个简单的自定义Dialog弹窗。
- 画笔实现的一个简单自定义控件
- Android实现一个简单的自定义适配器
- 简单实现一个自定义view的ProgressBar
- Android 实现一个简单的自定义View
- 简单的自定义标签实现树结构的小功能
- Python实现一个简单的Feistel结构的密码算法
- 使用数组实现的自定义栈结构
- 简单的实现一个自定义的Linq to Sql Provider
- Java实现一个简单的链表结构------LinkedList
- 一个简单的树结构
- JSP脚本中的九个内置对象
- A new world for me
- 【算法设计与分析基础】动态规划法 求两个序列的所有最长公共子序列及其长度
- win10系统升级后触摸板点击没反应
- IAR J-Link下载程序出现错误提示:Failed to get CPU status after 4 retries Retry?
- 自定义实现的一个简单的栈结构
- Java String部分内容详解
- 【机器学习】caffe:solver、train、val、deploy配置和线性回归神经网络
- hashmap与hashtable的区别
- Integer Break
- Android屏幕适配(不同的屏幕分辨率和尺寸)
- Leet Code 103. Binary Tree Zigzag Level Order Traversal 题解
- 线性表出、线性相关的定理总结思考
- Mac OS 终端命令行执行总是出现 command not found