您的位置:首页 > 理论基础 > 数据结构算法

数据结构之基于Java的链接栈实现

2017-05-26 10:04 633 查看
本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。

public class StackSLinked implements Stack {

private SLNode top; //链表首结点引用
private int size;   //栈的大小

public StackSLinked() {
top = null;
size = 0;
}

//返回堆栈的大小
public int getSize() {
return size;
}

//判断堆栈是否为空
public boolean isEmpty() {
return size==0;
}

//数据元素e入栈
public void push(Object e) {
SLNode q = new SLNode(e,top);
top = q;
size++;
}

//栈顶元素出栈
public Object pop() throws StackEmptyException {
if (size<1)
throw new StackEmptyException("错误,堆栈为空。");
Object obj = top.getData();
top = top.getNext();
size--;
return obj;
}

//取栈顶元素
public Object peek() throws StackEmptyException {
if (size<1)
throw new StackEmptyException("错误,堆栈为空。");
return top.getData();
}
}


public interface Stack {
//返回堆栈的大小
public int getSize();

//判断堆栈是否为空
public boolean isEmpty();

//数据元素e入栈
public void push(Object e);

//栈顶元素出栈
public Object pop() throws StackEmptyException;

//取栈顶元素
public Object peek() throws StackEmptyException;
}


//堆栈为空时出栈或取栈顶元素抛出此异常
public class StackEmptyException extends RuntimeException{

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