ArrayStack成员和各个方法实现
来源:互联网 发布:电国网络电视直播台 编辑:程序博客网 时间:2024/06/05 19:06
ArrayStack成员和各个方法实现
有了ArrayList的实现,实现ArrayStack好多了。
public void push(Telement); 需要数组 T[],容量,增量,栈顶
public T pop(); 需要数组 T[]
public T peek(); 需要数组 T[]
public boolean isEmpty(); 需要栈顶
public int size(); 需要栈顶
public Iterator<T> itorator(); 需要数组 T[]
public String toString(); 需要数组 T[]
成员可以定义4个如下:
public class ArrayStack<T> implements StackADT<T> {
private final int DEFAULT_CAPACITY = 100;
private final int INCREMENT=10;
private T[]stack;
private int top;
….
}
方法的实现
构造方法
@SuppressWarnings("unchecked")
public ArrayStack(){
//stack = newT[DEFAULT_CAPCITY];
stack = (T[])(new Object[DEFAULT_CAPACITY]);
top = 0;
}
Push方法:异常情况是栈满
@Override
public void push(T element) {
if(stack.length ==top)
expandCapacity();
stack[top] =element;
top ++;
}
private void expandCapacity() {
stack = Arrays.copyOf(stack,stack.length+INCREMENT);
}
其他方法也相对比较简单。注意,top就是栈中实际元素的数量
@Override
public T pop() {
if(isEmpty())
throw new EmptyCollectionException("the stack is empty!");
top--;
T result = stack[top];
stack[top] =null;
returnresult;
}
@Override
public T peek() {
if(isEmpty())
throw new EmptyCollectionException("the stack is empty!");
returnstack[top-1];
}
@Override
public boolean isEmpty() {
if(0== size())
return true;
else
return false;
}
@Override
public int size() {
returntop;
}
迭代的实现。和ArrayList的实现方法差不多。总是就是2个方法而已,一个问“有没有下个了”,如果有,那么另一个方法就“返回下一个”。
@Override
public Iterator<T> iterator() {
return new ArrayStackIterator();
}
private class ArrayStackIterator<T> implementsIterator<T>{
int pointer = -1;
@Override
public boolean hasNext() {//有没有下一个?
if(pointer <top-1)
return true;
else
return false;
}
@Override
public T next() {//返回下一个
pointer++;
return(T) stack[pointer];
}
}
public String toString(){
//调用了iterator,然后把元素的toString累计到一起就行了。每个人都会。。
Iterator<T> it = iterator();
StringBuilder sb = new StringBuilder();
while(it.hasNext()){
sb.append(it.next().toString()+"\n");
}
returnsb.toString();
}
- ArrayStack成员和各个方法实现
- 数据结构——ArrayStack和LinkedStack的实现
- 节点定义,成员分析,构造方法和add方法实现
- LinkedStack各个方法的实现
- Frameset中各个Frame间访问成员方法
- java 类 成员变量 方法 中各个修饰符详解
- Static成员和方法
- 考虑成员资源情况和各个任务间的关系
- 成员方法和静态方法
- php访问成员变量和成员方法
- 解析成员属性和成员方法
- 反射(成员方法和成员变量)
- 静态成员函数和静态成员方法
- Java成员变量和成员方法
- 类中的成员属性和成员方法
- Java成员变量和成员方法
- String类成员方法实现
- 成员变量和方法变量
- 自定义控件,判断子控件是否可以滑动
- 借书方案知多少
- MySQL的btree索引和hash索引的区别
- JAVA菜鸟入门 (19) inner calss: static v.s. non-static在main中被实例化时的区别
- nginx 模块的加载与初始化
- ArrayStack成员和各个方法实现
- 【实验】ListView、bundle的使用
- linux 系统常用命令
- Linux 下bin格式软件的安装与卸载
- CocoaPods的安装和使用
- node 使用get和post向后台请求数据的使用方式对比
- 文章标题
- json 数据 添加 删除 排序
- 安装和使用CocoaPods