链式栈的实现(java)

堆栈的链式存储称为链栈。
public class Stack<T> implements StackInterface<T> {

private Node<T> top; //链表首结点引用
private int size; //栈的大小

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

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

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

//数据元素e入栈
public void push(T t) {
Node<T> q = new Node<T>(t,top);
top = q;
size++;
}

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

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

//测试:将10进制数转换成8进制数
public static void main(String args[]){
System.out.println("请输入十进制数");
java.util.Scanner in=new java.util.Scanner(System.in);
int i=in.nextInt();
int temp=i;
Stack<Integer> s=new Stack<Integer>();
while(i>0){
s.push(i%8);
i=i/8;
}

System.out.println("十进制数"+temp+"转换成8进制数是:");


while(!s.isEmpty())
System.out.print(s.pop());

}
}


interface StackInterface<T> {
//返回堆栈的大小
public int getSize();

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

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

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

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

class Node< T> {
private T data;
private Node< T> next;

public Node() {
this(null,null);
}

public Node(T data, Node< T> next) {
this.data = data;
this.next = next;
}
public T getData(){
return data;
}
public void setData(T data){
this.data=data;
}

public Node<T> getNext(){
return this.next;
}

public void setNext(Node<T> next){
this.next=next;
}
}


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

public StackEmptyException(String err) {
super(err);
}
}


代码下载:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值