1,改写栈程序, 里面存放对象.
2,该程序应该放在 datastructure.stack 包内.
3,还是依靠强制类型转换, 支持不同的数据类型.
4,增加了 isEmpty() 方法.
package java21to30;
public class D25_ObjectStack {
public static final int MAX_DEPTH = 15;
int depth;
Object[] data;
public static void main(String[] args) {
D25_ObjectStack tempStack = new D25_ObjectStack();
for (char ch = 'a'; ch < 'm'; ch++) {
tempStack.push(new Character(ch));
System.out.println("当前栈值: " + tempStack);
}
char tempChar;
for (int i = 0; i < 12; i++) {
tempChar = ((Character) tempStack.pop()).charValue();
System.out.println("出栈: " + tempChar);
System.out.println("当前栈值: " + tempStack);
}
}
public D25_ObjectStack() {
depth = 0;
data = new Object[MAX_DEPTH];
}
public String toString() {
String resultString = "";
for (int i = 0; i < depth; i++) {
resultString += data[i];
}
return resultString;
}
public boolean push(Object paraObject) {
if (depth == MAX_DEPTH) {
System.out.println("栈满.");
return false;
}
data[depth] = paraObject;
depth++;
return true;
}
public Object pop() {
if (depth == 0) {
System.out.println("无元素出栈.");
return '\0';
}
Object resultObject = data[depth - 1];
depth--;
return resultObject;
}
public boolean isEmpty() {
if (depth == 0) {
return true;
}
return false;
}
}
结果输出:
当前栈值: a
当前栈值: ab
当前栈值: abc
当前栈值: abcd
当前栈值: abcde
当前栈值: abcdef
当前栈值: abcdefg
当前栈值: abcdefgh
当前栈值: abcdefghi
当前栈值: abcdefghij
当前栈值: abcdefghijk
当前栈值: abcdefghijkl
出栈: l
当前栈值: abcdefghijk
出栈: k
当前栈值: abcdefghij
出栈: j
当前栈值: abcdefghi
出栈: i
当前栈值: abcdefgh
出栈: h
当前栈值: abcdefg
出栈: g
当前栈值: abcdef
出栈: f
当前栈值: abcde
出栈: e
当前栈值: abcd
出栈: d
当前栈值: abc
出栈: c
当前栈值: ab
出栈: b
当前栈值: a
出栈: a
当前栈值: