栈 的java实现
来源:互联网 发布:数据处理作图软件 编辑:程序博客网 时间:2024/06/04 19:05
栈的java实现,链栈的实现,其节点的声明方式,与结构体不大相同,只一点需要注意,还有泛型的擦除。使用泛型时,对泛型是不分配内存空间的 ,只是栈中引用指向他,使用new 分配空间的都会在堆中。
/** *数组栈的java实现 */class ArrayStack<AnyType>{private static final int DEFAULT_CAPACITY=10;AnyType []array;int size;int topStack;public ArrayStack(){clear();size=0;}public void push(AnyType x){array[++topStack]=x;size++;}/** * 再取出栈顶元素时先判断是否为空; */public AnyType top(){if(topStack==-1)return null; return array[topStack];}public AnyType pop(){if(topStack==-1)return null;size--;return array[topStack--];}public void clear(){topStack=-1;ensureCapacity(DEFAULT_CAPACITY);}private void ensureCapacity(int defaultCapacity){if(size>defaultCapacity)return ;//注意这里只能够创建object类型,然后再强制类型转换,因为泛型有类型//擦除,用new T创建了 也不知道T的确切类型,不能识别AnyType AnyType newArray[]=(AnyType[])new Object[defaultCapacity]; for(int i=0;i<size;i++) newArray[i]=array[i]; array=newArray;}public int size(){return size;}}class LinkedStack<AnyType>{private static class Node<AnyType>{public AnyType e;public Node<AnyType> pre;public Node(AnyType e,Node<AnyType> pre){this.e=e;this.pre=pre;}}private Node<AnyType> top; int size;public LinkedStack(){clear();}public void clear(){size=0;top=new Node<AnyType>(null,null);}public AnyType top(){return top.e;}public void push(AnyType e){top=new Node<AnyType>(e, top);size++;}public int size(){return size;}public AnyType pop(){if(isEmpty())return null;AnyType a=top.e;size--;top=top.pre;return a;}public boolean isEmpty(){if(size==0)return true;return false;}}public class TestStack { public static void main(String args[]) { LinkedStack<Integer>a=new LinkedStack<Integer>(); a.push(2); a.push(3); a.push(4); System.out.println(a.size()+" "); System.out.println(a.pop()+" "); System.out.println(a.size()+" "); }
0 0
- 栈的实现(JAVA)
- 栈的实现-----java
- 【java】栈的实现
- 栈的java实现
- 栈的Java实现
- 栈的实现-java
- 栈 的java实现
- Java栈的实现
- java栈的实现
- 栈的实现java
- Java 栈的实现
- Java 栈的实现
- java栈的实现
- 栈的java实现
- java 栈的实现
- java栈的实现
- java栈的实现
- Java栈的实现
- 第十届飞思卡尔杯智能车竞赛规则解读
- const的常见基本用法
- windows日志实现
- 独立键盘的检测
- Java网络爬虫的实现
- 栈 的java实现
- [leetcode]Remove Element
- DM8168 unrecoverable error: OMX_ErrorBadParameter (0x80001005) [resolved]
- Ubuntu 14.04 禁止可移动介质自动播放
- C# 文件操作及目录操作
- 重温JAVA(学习路线以及技术方向)
- ZOJ 1610 线段树区间染色
- 基于Luence的分布式搜索引擎ElasticSearch搜索实例演示(Java API)
- hdu 4472 递推