Java链表栈LinkedStack
作者: wangding263
链接:http://wangding263.javaeye.com/blog/254272
发表时间: 2008年10月17日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
* 然后往里面一个一个的加节点:
* 1.先加入top节点
* 2.然后再在top节点上加入node1节点,node1节点指向top节点
* 3.再在node1节点上加入node2节点,node2节点指向node1节点
* ..........
Java实现链栈之前,我们首先应该创建一个链表节点类:LinkNode<E>,代码如下:
/*** 链表节点
*
* @author 鼎鼎
*
* @param <E>
*/
public class LinkNode<E> {
/**
* 表示存储在节点中的数据项
*/
private E data;
private LinkNode<E> next;
public LinkNode(E data) {
this.data = data;
this.next = null;
}
public LinkNode(E data, LinkNode next) {
this.data = data;
this.next = next;
}
public E getData() {
return data;
}
public void setData(E data) {
this.data = data;
}
public LinkNode<E> getNext() {
return next;
}
public void setNext(LinkNode<E> next) {
this.next = next;
}
}
然后 是具体的链栈的实现,代码如下:
/*** 链表实现的栈,在想象栈的时候,最好把他竖着想象成一个立着的容器。
* 然后往里面一个一个的加节点:
* 1.先加入top节点
* 2.然后再在top节点上加入node1节点,node1节点指向top节点
* 3.再在node1节点上加入node2节点,node2节点指向node1节点
* ..........
*
* @author 鼎鼎
*
* @param <E>
*/
public class LinkedStack<E> implements Stack<E> {
// 表示链表的头结点
private LinkNode<E> top;
// 表示链表中当前的元素个数
private int size;
public LinkedStack() {
this.top = null;
size = 0;
}
public boolean isEmpty() {
return top == null;
}
public E pop() {
if (isEmpty()) {
throw new RuntimeException("链表为空!!");
}
// 将栈顶元素的值保存起来
E tempData = top.getData();
// 然后出栈,次栈顶元素成为新的栈顶元素
top = top.getNext();
// 栈中元素个数减少一
size--;
return tempData;
}
public void push(E target) {
if(target==null){
throw new RuntimeException("不能往栈中加入null元素");
}
LinkNode<E> newNode = new LinkNode<E>(target);
if (isEmpty()) {
top = newNode;
} else {
//新加入的节点放入栈中,并指向原来的top节点
newNode.setNext(top);
// 新加入的元素成为了新的栈顶
top = newNode;
}
size++;
}
public int size() {
return size;
}
public E top() {
if (isEmpty()) {
throw new RuntimeException("链表为空!!");
}
return top.getData();
}
}
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
- 搜狐网站诚聘Java、PHP和C++工程师
- Windows7在微软WinHEC 2008上揭开神秘面纱
- 加入阿里巴巴,发展潜力无限
以上是 Java链表栈LinkedStack 的全部内容, 来源链接: utcz.com/z/393799.html