栈接口的定义

public interface Stack
{
	void push(Object obj);
	Object pop();
	Object peek();
	boolean isEmpty();
	void clear();
}

栈的顺序存储结构操作实现

public class SequenceStack implements Stack
{
	final int minSize=10;
	private Object[] stackArray;
	private int top;
	
	public SequenceStack()
	{
		top=-1;
		stackArray=new Object[minSize];
	}
	public SequenceStack(int n)
	{
		if(n 
  

客户端实现代码

public class Example
{
	public static void main(String[] args)
	{
		Stack sck=new SequenceStack();
		int []a={3,8,5,17,9,30,15,22};
		for(int i=0;i 
  

栈的链接存储结构

链接栈的操作方法十分简单,具体如下:

public class LinkStack implements Stack
{
	private Node top;
	public LinkStack()
	{
		top=null;
	}
	public void push(Object obj)
	{
		top=new Node(obj,top);
	}
	public Object pop()
	{
		if(top==null) return null;
		Node p=top;
		top=top.next;
		return p.element;
	}
	public Object peek()
	{
		if(top==null) return null;
		return top.element;
	}
	public boolean isEmpty()
	{
		return top==null;
	}
	public void clear()
	{
		top=null;
	}
}

客户端实现代码只需要将上一个调试程序的SequenceStack()替换为LinkStack()就可以。


队列

public interface Queue
{
	void enter(Object obj);
	Object leave();
	Object peek();
	boolean isEmpty();
	void clear();
}

队列的顺序存储结构的实现

public class SequenceQueue implements Queue
{
	final int minSize=10;
	private Object queueArray[];
	private int front,rear;
	
	public SequenceQueue()
	{
		front=rear=0;
		queueArray=new Object[minSize];
	}
	public SequenceQueue(int n)
	{
		front=rear=0;
		if(n<=minSize) n=minSize;
		queueArray=new Object[n];
	}
	public void enter(Object obj)
	{
		if((rear+1)%queueArray.length==front)
		{
			Object[] p=new Object[queueArray.length*2];
			if(rear==queueArray.length-1)
			{
				for(int i=1;i<=rear;i++) p[i]=queueArray[i];
			}
			else{
				int i,j=1;
				for(i=front+1;i 
  

客户端实现代码:

public void Example
{
	public static void main(String[] args)
	{
		Queue que=new SequenceQueue();
		int []a={3,8,5,17,9,30,15,22,20,13,35,26};
		int i;
		for(i=0;i 
  

队列的链接存储结构的实现

public class LinkQueue implements Queue
{
	private Node front,rear;
	public LinkQueue()
	{
		front=rear=null;
	}
	public void enter(Object obj)
	{
		if(rear==null)
			front=rear=new Node(obj,null);
		else
			rear=rear.next=new Node(obj,null);
	}
	public Object leave()
	{
		if(front==null) return null;
		Node x=front;
		front=front.next;
		if(front==null) rear=null;
		return x.element;
	}
	public Object peek()
	{
		if(front==null) return null;
		return front.element;
	}
	public boolean isEmpty()
	{
		return front==null;
	}
	public void clear()
	{
		front=rear=null;
	}
}

客户端实现代码只需要将上一个调试程序的主函数的第一句改为Queue que=new LinkQueue();就可以了。