java 通过链表实现栈

来源:互联网 发布:亿世界系统源码php 编辑:程序博客网 时间:2024/06/03 15:29

节点类

package stack.demo;public class Node {    private Object data;    private Node nextNode;    private Node prevNode;    public Node(Object data) {        super();        this.data = data;    }    public Node getNextNode() {        return nextNode;    }    public void setNextNode(Node nextNode) {        this.nextNode = nextNode;    }    public Object getData() {        return data;    }    public void setData(Object data) {        this.data = data;    }    public Node getPrevNode() {        return prevNode;    }    public void setPrevNode(Node prevNode) {        this.prevNode = prevNode;    }}

栈类

package stack.demo;public class LinkedStack {    Node first;    Node last;    int maxLength = 5;    int size = 0;    public void add(String value) {        if (size == maxLength) {            System.out.println("已经是满栈了");            return;        }        Node newNode = new Node(value);        Node temp = last;        newNode.setPrevNode(temp);        last = newNode;        if (temp == null) {            first = newNode;        } else {            temp.setNextNode(newNode);        }        size++;    }    // 栈是先进后出,必须要栈低以上的先出完,才能拿到栈的底的数据    public String removeLast() {        if (size == 0) {            System.out.println("已经是空栈了");            return null;        }        Node temp = last;        last = last.getPrevNode();        size--;        return (String) temp.getData();    }}

执行类

package stack.demo;public class Main {    public static void main(String[] args) {        LinkedStack ls = new LinkedStack();        ls.add("a");        System.out.println("进a");        ls.add("b");        System.out.println("进b");        ls.add("c");        System.out.println("进c");        ls.add("d");        System.out.println("进d");        ls.add("e");        System.out.println("进e");        ls.add("f");        System.out.println("进f");        System.out.println("出栈: " + ls.removeLast());        System.out.println("出栈: " + ls.removeLast());        System.out.println("出栈: " + ls.removeLast());        System.out.println("出栈: " + ls.removeLast());        System.out.println("出栈: " + ls.removeLast());        System.out.println("出栈: " + ls.removeLast());    }}

执行结果
进a
进b
进c
进d
进e
已经是满栈了
进f
出栈: e
出栈: d
出栈: c
出栈: b
出栈: a
已经是空栈了
出栈: null

原创粉丝点击