public class TestStackOfIntegers{
public static void main(String[] args){
StackOfIntegers stack = new StackOfIntegers();
for(int i = 0; i < 10; i++)
stack.push(i);
while(!stack.empty())
System.out.print(stack.pop() + " ");
}
}class StackOfIntegers{
private int[] elements;
private int size;
private static final int DEFAULT_CAPACITY = 16;
public StackOfIntegers(){
this(DEFAULT_CAPACITY);
}
public StackOfIntegers(int capacity){
elements = new int[capacity];
}
public void push(int value){
if(size >= elements.length){
int[] temp = new int[elements.length * 2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements = temp;
}
elements[size++] = value;
}
public int pop(){
return elements[--size];
}
public int peek(){
return elements[size - 1];
}
public boolean empty(){
return size == 0;
}
public int getSize(){
return size;
}
}Java类Stringboolean
public static void main(String[] args){
StackOfIntegers stack = new StackOfIntegers();
for(int i = 0; i < 10; i++)
stack.push(i);
while(!stack.empty())
System.out.print(stack.pop() + " ");
}
}class StackOfIntegers{
private int[] elements;
private int size;
private static final int DEFAULT_CAPACITY = 16;
public StackOfIntegers(){
this(DEFAULT_CAPACITY);
}
public StackOfIntegers(int capacity){
elements = new int[capacity];
}
public void push(int value){
if(size >= elements.length){
int[] temp = new int[elements.length * 2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements = temp;
}
elements[size++] = value;
}
public int pop(){
return elements[--size];
}
public int peek(){
return elements[size - 1];
}
public boolean empty(){
return size == 0;
}
public int getSize(){
return size;
}
}Java类Stringboolean
解决方案 »
- 请问如何用eclipse调用第三方包?
- 谁能帮我看看这是什么问题
- 事件是什么?
- 子类对象调用覆盖的方法?
- 紧急求助:将字符串 MM/DD/YYYY 转换成java.util.Date类型
- main()的字符串数组参数~
- 谁有jbuilder的注册码或注册文件
- ○○急问!为什么我在com.klg.jclass.chart.JCChart上添加的JPopupMenu不成功??○○
- 关于weblogic5.1
- 哪里有thinking in java和thinking in c++下载,希望是中国的,外国down de慢
- 新人求助,求大神解惑
- Java生产者消费者例子,大家看还有哪里可以改进? Java多线程 wait和notify运用 synchronized运用
if(size >= elements.length){
int[] temp = new int[elements.length * 2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements = temp;
}
elements[size++] = value;
}
这其实是ArrayList的底层实现罢了,你所定义的的类的底层是由一个数组来维护的,这个数组本身有一个默认的长度,当你向数组中添加元素时,先判断是否已达到原有数组的长度,如果达到,则在新建一个数组长度是原数组的两倍,然后将原数组中的元素拷贝到新数组中。对于你说的size的大小问题我认为是你存储元素的个数。对于模仿Stack实现其实你可以用现成的ArrayList类或者LinkedList类,建议楼主看一下他们的源代码
{
private LinkedList<T> storage = new LinkedList<T>();
public void push(T v){storage.addFirst(v);}
public T peek(){return storage.getFirst();}
public T pop(){return storage.removeFirst();}
public boolean empty(){return storage.isEmpty();}
public String toString(){return storage.toString();}
}