您的位置:首页 > 其它

下压堆栈的链表实现(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--;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表