实现栈操作的接口:
Stack.java
package com.wanali.java_ds.sqstack;
public interface Stack {
public void clear();
public boolean empty();//判断栈是否为空
public int length();//求栈的长度
public Object peek();// 取得栈顶元素
public void push(Object x);// 向栈顶添加元素
public Object pop();// 删除并返回栈顶元素
public void display();//打印栈中元素
}
SqStack.java
package com.wanali.java_ds.sqstack;
public class SqStack implements Stack {
private Object[] elem;
private int top;
public SqStack(int maxsize) {
top = 0;
elem = new Object[maxsize];
}
public void clear() {
// TODO Auto-generated method stub
while (top != 0) {
elem[top] = null;
top--;
}
}
public boolean empty() {
// TODO Auto-generated method stub
return top == 0;
}
public int length() {
// TODO Auto-generated method stub
int i = 0;
while (top != 0) {
i++;
--top;
}
return i;
}
public Object peek() {
// TODO Auto-generated method stub
return elem[top - 1];
}
public void push(Object x) {
// TODO Auto-generated method stub
elem[top] = x;
top++;
}
public Object pop() {
// TODO Auto-generated method stub
return elem[--top];
}
public void display() {
for (int i = top - 1; i >= 0; i--) {
System.out.println(elem[i]);
}
}
}
TestSqStack.java
package com.wanali.java_ds.sqstack;
public class TestSqStack {
public static void main(String[] args) {
SqStack stack = new SqStack(10);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.display();
System.out.println("判断栈是否为空:");
System.out.println(stack.empty());
System.out.println("删除栈顶元素:");
stack.pop();
stack.display();
System.out.println("取栈顶元素:"+"\n"+stack.peek());
System.out.println("栈的长度为:" + "\n" + stack.length());
System.out.println("调用clear方法清空栈:");
stack.clear();
stack.display();
System.out.println("栈已被清空!!");
System.out.println("判断栈是否为空:");
System.out.println(stack.empty());
}
}
运行结果如下: