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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值