Java实现栈数据结构
来源:互联网 发布:js单选框选中触发事件 编辑:程序博客网 时间:2024/05/16 06:38
心血来潮就想用java实现一个栈的数据结构
1.自定义栈类
package edu.tcu.soft;public class MyStack<E> {private Object[] object=new Object[10];private int top;// 栈顶指针public MyStack() { this.top = -1;}// 入栈操作public void push(E item) {// 确保栈中有足够的空间// 入栈if (top==object.length - 1) { object=increaseStack(object);//栈满时,自动增加栈的深度} else {object[++top] = item;}}// 出栈操作@SuppressWarnings("unchecked")public E pop() {// 确保栈非空// 弹出栈顶元素if (top == -1) {System.out.println("栈为空");return null;} else {return (E) object[top--];}}// 获取栈顶元素@SuppressWarnings("unchecked")public E peek() {// 确保栈非空// 获取栈顶元素if (top == -1) {System.out.println("栈为空");return null;} else {return (E) object[top];}}// 查找某个元素在栈的位置public int search(E item) {// 栈非空// 查找在栈的位置for (int i = top; i >-1; i--) {if(object[i].equals(item)){return i;}}return -1;}// 栈是否为空public boolean empty() {if (top == -1)return true;return false;}//当栈的空间满的时候自动增长一倍的空间public Object[] increaseStack(Object[] object){ Object[] ob=new Object[object.length*2];for(int i=0,j=0;i<ob.length&&j<object.length;i++,j++){ob[i]=object[i];}return ob;}public int getObLength(){ return object.length;}}
2.测试类
package edu.tcu.soft;public class Test { public static void main(String[] args) { MyStack<Integer> stack=new MyStack<Integer>(); stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.push(5); stack.push(6); stack.push(7); stack.push(8); stack.push(9); stack.push(10); stack.push(11); stack.push(12); System.out.println(stack.pop()+"---"); System.out.println(stack.pop()+"---"); System.out.println(stack.pop()+"---"); System.out.println("栈的深度:"+stack.getObLength());}}
实现了栈的先进后出的特性,还有栈的自动增长。不过觉得栈的自动增长做的不够好,时间复杂度和空间复杂度应该挺大的。
0 0
- java 实现栈数据结构
- java实现栈数据结构
- Java实现栈数据结构
- 数据结构-Java实现栈
- Java实现数据结构--栈
- java数据结构,实现栈/队列
- Java 数据结构----栈的实现
- java实现栈,队列数据结构
- Java数据结构--栈的实现
- Java实现数据结构中的栈
- Java数据结构:栈的实现
- JAVA 数据结构之栈实现
- 【JAVA数据结构】栈(数组实现)
- 数据结构--顺序栈java实现
- 数据结构-栈 JAVA语言实现
- 数据结构实战java实现栈
- Java数据结构实现之栈
- java 利用 LinkedList类实现 数据结构 栈.......
- 2016 ACM/ICPC Reginal Shengyang hdu 5893 List wants to travel(树链剖分 线段树区间更新真蛋疼)★
- 关于接口和多态
- tensorflow(三) 模型保存
- Unity平台的预处理及依赖于平台的编译
- 简单五子棋
- Java实现栈数据结构
- 组合数取模
- [JSPatch使用]OC转JS问题列表
- 使用JS实现选项卡和滑动门的效果
- poj3126 Prime Path BFS深度优先搜索
- Python 快速入门教程
- hdu 2196树形dp经典 树的最长路
- AVL树
- 第四周项目3-单链表应用(3)