今天孔同学遇到了小难题,“怎么通过实现接口的方式来实现栈和队列?”。还好能帮忙做出来。
import java.util.*;
//定义一个接口
interface Stack{
void push(int val);
Object pop();
int size();
int maxSize();
}
//通过接口实现栈
class TestStack implements Stack {
int size;
int maxSize;
Object list[];
public TestStack()
{
size=0;
maxSize=20;
list=new Object[maxSize];
}
public void push(int obj)
{
if(size == maxSize)
{
maxSize=maxSize*2;
Object newObj[]=new Object[maxSize];
System.arraycopy(list, 0, newObj, 0, list.length);
list=newObj;
}
list[size]=obj;
size++;
}
public Object pop()
{
if(size!=0)
{
size--;
return list[size];
}
else throw new ArrayIndexOutOfBoundsException(size);
}
public int size()
{
return size;
}
public int maxSize()
{
return maxSize;
}
}
//通过接口实现队列
class TestQueue implements Stack {
int i=0;
int size;
int maxSize;
Object list[];
public TestQueue()
{
size=0;
maxSize=20;
list=new Object[maxSize];
}
public void push(int obj)
{
if(size == maxSize)
{
maxSize=maxSize*2;
Object newObj[]=new Object[maxSize];
System.arraycopy(list, 0, newObj, 0, list.length);
list=newObj;
}
list[size]=obj;
size++;
}
public Object pop()
{
Object a;
if(i<=size)
{
a=list[i];
}
return list[i++];
}
public int size()
{
return size;
}
public int maxSize()
{
return maxSize;
}
}
//测试
public class StackAndQueue{
public static void main(String []args)
{
TestStack myStack=new TestStack();
TestQueue myQueue=new TestQueue();
System.out.println("测试栈!");
for(int i=0; i<10; i++)
{
myStack.push(i);
}
System.out.println("栈的长度是:"+myStack.size());
System.out.print("出栈顺序是:");
for(int i=0; i<10; i++){
System.out.print(myStack.pop()+" ");
}
System.out.println("/n");
System.out.println("测试队列!");
for(int i=0; i<10; i++)
{
myQueue.push(i);
}
System.out.println("队列的长度是:"+myQueue.size());
System.out.print("出队顺序是:");
for(int i=0; i<10; i++){
System.out.print(myQueue.pop()+" ");
}
}
}