先在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();
}
}