数组实现动态栈,java
2014-03-26 11:27
309 查看
1.什么叫栈结构?
栈结构又叫下压栈,具有先进后出的特点
比始下面的图,一开始的时候是1,2,3,4,如果要一个个都出来那么顺序就是4,3,2,1这个很容易理解(第一次画图)
2.结构的应用:
最容易想到的就是进程的调用
3.栈结构的数组实现
public class ResizingArrayStack<Item> implements Iterable<Item> {
private Item[] a = (Item[]) new Object[1];
private int N;
public boolean isEmpty() {
return N == 0;
}
public int size() {
return N;
}
private void resize(int max) {
Item[] temp = (Item[]) new Object[max];
for (int i = 0; i < N; i++)
temp[i] = a[i];
a = temp;
}
public void push(Item item) {
if (N == a.length)
resize(2 * a.length);
a[N++] = item;
}
public Item pop() {
Item item = a[--N];
a
= null;
if (N > 0 && N == a.length / 4)
resize(a.length / 2);
return item;
}
@Override
public Iterator<Item> iterator() {
return new RevererArrayIterator();
}
private class RevererArrayIterator implements Iterator<Item> {
private int i = N;
@Override
public boolean hasNext() {
return i > 0;
}
@Override
public Item next() {
return a[--i];
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
}
栈结构又叫下压栈,具有先进后出的特点
比始下面的图,一开始的时候是1,2,3,4,如果要一个个都出来那么顺序就是4,3,2,1这个很容易理解(第一次画图)
2.结构的应用:
最容易想到的就是进程的调用
3.栈结构的数组实现
public class ResizingArrayStack<Item> implements Iterable<Item> {
private Item[] a = (Item[]) new Object[1];
private int N;
public boolean isEmpty() {
return N == 0;
}
public int size() {
return N;
}
private void resize(int max) {
Item[] temp = (Item[]) new Object[max];
for (int i = 0; i < N; i++)
temp[i] = a[i];
a = temp;
}
public void push(Item item) {
if (N == a.length)
resize(2 * a.length);
a[N++] = item;
}
public Item pop() {
Item item = a[--N];
a
= null;
if (N > 0 && N == a.length / 4)
resize(a.length / 2);
return item;
}
@Override
public Iterator<Item> iterator() {
return new RevererArrayIterator();
}
private class RevererArrayIterator implements Iterator<Item> {
private int i = N;
@Override
public boolean hasNext() {
return i > 0;
}
@Override
public Item next() {
return a[--i];
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
}
相关文章推荐
- java实现动态智能数组,将旧数组copy到新数组
- Java核心技术很优美的代码3 实现数组的动态分配
- 算法(第四版)学习笔记之java实现能够动态调整数组大小的栈
- 选择排序(Java实现)--从键盘输入动态数组,并且排序后输出
- java自定义动态数组-控制台购书系统-购物车实现
- 算法(第四版)学习笔记之java实现可以动态调整数组大小的栈
- Java中动态数组的实现
- 队列--基于动态循环数组实现(Java)
- 实现AMF3与Java之间数组的传递(动态创建数组)...
- Java实现数组动态输入
- Java数组反射实现动态的判断一个对象书否是数组,并且对数组进行拆包输出 。。
- 自己实现的动态数组(java.util.Vector)
- java实现list清除重复的字符串;arraylist动态数组;角谷定理最终得1,找出10000以内哪个数字的步骤最长
- Java数组反射实现动态的判断一个对象书否是数组,并且对数组进行拆包输出 。。
- Java数组反射实现动态的判断一个对象书否是数组,并且对数组进行拆包输出 。。
- 算法(第四版)笔记<一>-------动态队列的数组实现(Java语言)
- Java—java中如何实现动态数组的创建与赋值
- java反射实现动态扩建数组
- java数组反射实现动态的判断一个对象是否是数组并且对数组进行拆包输出
- Java数组实现可以动态增长的队列