通过学习自定义栈,了解栈的数据结构。
首先写一个栈的接口,描述其具有的基本功能。Stack.java
然后写一个接口的实现类,这只是其中一种实现方式。ArrayStack.java
最后写一个测试类,测试自定义栈的效果。Test.java
整个栈的实现,借助了 自定义数组 这篇文章的类。Array.java
结构如下:
Stack.java:
package algorithm;
public interface Stack
/**
* 获取栈中数据的大小
* @return
*/
int getSize();
/**
* 判断栈是否为空
* @return
*/
boolean isEmpty();
/**
* 入栈
* @param e
*/
voID push(E e);
/**
* 出栈
* @return
*/
E pop();
/**
* 查看栈顶元素
* @return
*/
E peek();
}
ArrayStack.java:
package algorithm;
public class ArrayStack
private Array
/**
* 无参构造函数,调用array的无参构造函数,默认为10的 初始容量。
*/
public ArrayStack(){
array=new Array
}
/**
* 带参构造函数,指定初始容量。
* @param capacity
*/
public ArrayStack(int capacity) {
array=new Array
}
/**
* 获取栈的大小
*/
@OverrIDe
public int getSize() {
return array.getSize();
}
/**
* 判断栈是否为空
*/
@OverrIDe
public boolean isEmpty() {
return array.isEmpty();
}
/**
* 入栈
*/
@OverrIDe
public voID push(E e) {
array.addLast(e);
}
/**
* 出栈
*/
@OverrIDe
public E pop() {
return array.removeLast();
}
/**
* 查看栈顶元素
*/
@OverrIDe
public E peek() {
return array.get(array.getSize()-1);
}
/**
* 重写Object的toString方法
*/
@OverrIDe
public String toString() {
StringBuilder sb=new StringBuilder();
sb.append("Stack:[");
for(int i=0;i
sb.append(array.get(i));
if(i!=array.getSize()-1) {
sb.append(",");
}
}
sb.append("] top");//表明最后是栈顶。
return sb.toString();
}
/**
* 自有的方法,获取栈的总容量。
* @return
*/
public int getCapacity() {
return array.getCapacity();
}
}
Test.java:
package algorithm;
public class Test {
public static voID main(String[] args) {
Stack
for(int i=0;i<5;i++) {
stack.push(i);
System.out.println(stack);
}
stack.pop();
System.out.println(stack);
}
}
控制台输出:
总结以上是内存溢出为你收集整理的自定义栈全部内容,希望文章能够帮你解决自定义栈所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)