Java的一个堆栈例子
来源:互联网 发布:懒人听书软件 编辑:程序博客网 时间:2024/06/07 23:03
package generics;/** * 堆栈类 * 栈遵循先入后出规则 */public class LinkedStack<T> { private Node<T> top = new Node<T>(); public static void main(String[] args) { LinkedStack<String> lss = new LinkedStack<String>(); for (String s : "Phases on stun !".split(" ")) lss.push(s);// 压栈 String str; while ((str = lss.pop()) != null) System.out.println(str); } private static class Node<U> { U item; Node<U> next; Node() { item = null; next = null; } Node(U item, Node<U> next) { this.item = item; this.next = next; } /** * 判断是否是空栈 */ boolean end() { return item == null && next == null; } } /** * 压栈新的元素item 新的元素位置指针指向上一次入栈元素 * * @param item * 入栈的新元素 */ private void push(T item) { top = new Node<T>(item, top); } /** * 出栈 * 如果是栈底,返回当前栈的元素 如果还没到栈底,返回下一个栈元素引用 */ public T pop() { T result = top.item; if (!top.end()) top = top.next; return result; }}
输出
!
stun
on
Phases
分析
这个例子使用了一个末端哨兵来判断堆栈何时为空。这个末端
哨兵是在构造LinkedStack时候创建的。然后每调用pop()方法都会返回top.item,然后丢弃当前top所指的Node,并将top移到下一个Node,但是到了末端哨兵就不再移动top了。如果到了哨兵末端继续调用pop,会得到null。
0 0
- Java的一个堆栈例子
- 一个堆栈溢出的例子
- java模拟堆栈例子
- 一个java多线程的例子
- java.io的一个例子
- 一个java IO的例子
- 一个Java debug的例子
- 一个 Java classloader 的例子
- java 反射的一个例子
- java死锁的一个例子
- c 数据结构 linkedStack 链表模拟堆栈 一个更具有通用型的例子
- java 泛型 一个堆栈类
- android java 打印调用堆栈的一个简单方法
- java代码中打印出一个函数的调用堆栈
- Java JDBC连接的一个例子
- 用JAVA操作WORD的一个例子
- java continue标签的一个技巧性例子
- java自定义异常的一个例子
- C++ bitset类的使用与简介
- Centos安装(更新)Git
- Memset 初始化问题
- java 用properties文件配置spring数据源,用spring的JdbcTemplate的queryForList查数据
- oracle 实现表中某个字段的自动增加(相当于有些数据库的自增列)
- Java的一个堆栈例子
- N皇后问题
- 一种自适应的图像二值化
- laravel插件包 网站 国外的哦
- ConcurrentHashMap中rehash函数理解
- 使用spring 配置数据源,并用数据源得到连接,操作sql
- Ubuntu 复制文件到远端时错误,Permission denied 失败原因深度探索
- 如何给 textview添加类似于textfield的水印文字
- Redis 使用 Lua 实现 split 结合 HMGET 批量读取数据