JAVA版数据结构之栈的链式存储实现

先在comsun.list里定义结点的接口以及单链表结点的实现
package com.sun.stackAndqueue;
//栈的一个异常类的继承
public class StackEmptyExcetion extends RuntimeException{
   public StackEmptyExcetion(String err){
    super(err);
   }
}
package com.sun.list;
//单链表结点
public class SLNode implements Node{

	private Object element;
	private SLNode next;
	public SLNode(){
		this(null,null);
	}
	public SLNode(Object ele,SLNode next) {
		this.element=ele;
		this.next=next;
	}
	public Object getElement() {
		return element;
	}

	public void setElement(Object element) {
		this.element = element;
	}

	public SLNode getNext() {
		return next;
	}

	public void setNext(SLNode next) {
		this.next = next;
	}

	@Override
	public Object getData() {
		// TODO Auto-generated method stub
		return element;
	}

	@Override
	public void setData(Object obj) {
		// TODO Auto-generated method stub
		element=obj;
	}   
}

接下来,就是栈的实现,栈可以顺序存储,也可以通过链式存储,顺序存储很简单,这里我们就不讲了,栈的链式存储首先要写一个栈的接口,这里的接口我们要自己写一个异常类,代码如下

package com.sun.stackAndqueue;
//栈的一个异常类的继承
public class StackEmptyExcetion extends RuntimeException{
   public StackEmptyExcetion(String err){
	   super(err);
   }
}
package com.sun.stackAndqueue;
//栈的接口
public interface Stack {
    public int getSize();
    public boolean isEmpty();
    public void push(Object e);  //元素入栈
    public Object pop()throws StackEmptyExcetion;  //栈顶元素出栈
    public Object peek()throws StackEmptyExcetion;  //取栈顶元素
}
package com.sun.stackAndqueue;
//Stack的链式存储实现
import com.sun.list.*;
public class StackSLinked implements Stack{
     private SLNode top;   //链表首结点引用
    private int size;     //栈的大小
    public StackSLinked(){
    	top=null;
    	size=0;
    }
	@Override
	public int getSize() {
		// TODO Auto-generated method stub
		return size;
	}

	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		return size==0;
	}
     
	@Override
	//数据元素e入栈
	public void push(Object e) {
		SLNode q=new SLNode(e, top);
		top=q;
		size++;
		
	}

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

	@Override
	public Object peek() throws StackEmptyExcetion {
		if(size<1)
			throw new StackEmptyExcetion("错误:堆栈为空");
		return top.getData();
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值