下压堆栈的链表实现(LIFO)
2016-07-26 13:52
267 查看
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * Created by ZYQ on 2016/7/26. * 实现LIFO(先进后出)的下压栈 */ public class Stack<String> { private Node first; // 栈顶 private int N; // 元素数量 // 定义接点的嵌套类 private class Node{ String string; Node next; } // 判断链表是否为空 public boolean isEmpty() { return first == null; } // 统计链表结点数 public int size() { return N; } // 把元素添加在表头 public void push(String s) { Node oldfirst = first; first = new Node(); first.string = s; first.next = oldfirst; N++; } // 将元素从表头删除 public String pop() { String s = first.string; first = first.next; N--; return s; } // 测试用例 public static void main(java.lang.String[] args ) throws IOException{ Stack<java.lang.String> stack = new Stack<java.lang.String>(); // 创建输入流对象,读取一行数据,并以空格为分隔转化为String数组 System.out.println("Enter the statement:"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); java.lang.String intput = reader.readLine(); java.lang.String[] item = intput.split(" "); for (java.lang.String s : item) { // 输入"-"代表出栈 if (!s.equals("-")) { stack.push(s); } else if (!stack.isEmpty()) { System.out.println(stack.first.string + " left on stack"); stack.pop(); } } // 遍历链表输入下压堆栈的值 System.out.println("The Stack:"); int number = stack.size(); while (number != 0) { System.out.print(stack.first.string + " "); stack.first = stack.first.next; number--; } } }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C++基于栈实现铁轨问题
- 浅析C语言中堆和栈的区别
- C语言栈的表示与实现实例详解
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言实现颠倒栈的方法
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- java数据结构之java实现栈