java实现栈

今天想起写一个实现栈的代码,就试着去写了些,发现使用平常的LinkedList<T>来实现栈的存取,获取指定值就显得太过依赖java API了,于是自己想了想栈的基本结构,无非就是底部元素和头部元素的进出操作,于是就想到了用链表来实现栈的存取。链表的基本结构就是当前结点的值指向下一个链表结点。即node.element->node.next。代码如下:

public class ListNode    
{   
    public String element;
    public ListNode next;
    ListNode(String theElement) {
        this(theElement, null);
    }
    ListNode(String theElement, ListNode n) {
        element = theElement;
        next = n;
    }
    public void setNext(ListNode n) {
        next = n;
    }
}  

此类中使用element代表当前结点的值,next代表链表的下一个结点。而此类只是实现了链表的结构,下面来实现栈的操作:

public class StackList {

    private ListNode topOfStack;//定义栈顶部元素这里可以看做为一个链表结点,因为它的值是指向下一个结点的
    public StackList() {
        topOfStack = null;
    }
    public void makeEmpty() {
        topOfStack = null;
    }
    public boolean isEmpty() {
        return topOfStack == null;
    }
    public void push(String x) {//将一个值为x的结点放入栈中,此时的顶部元素就变为这个结点了
        topOfStack = new ListNode(x, topOfStack);
    }
    public String top() {//获取顶部元素值
        if (isEmpty())
            return "#";
        else
            return topOfStack.element;
    }
    public void pop() {//从栈中弹出元素,此时顶部元素变为原来顶部元素的下一个元素
        if (!isEmpty())
            topOfStack = topOfStack.next;
    }
    public String topAndPop() {//获取顶部元素并弹出
        if (isEmpty())
            return "#";
        String topItem = topOfStack.element;
        topOfStack = topOfStack.next;
        return topItem;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值