/**
实现栈结构(先进后出), 栈是限定仅在表头进行插入和删除操作的线性表。
基本要求:实现以下栈结构的方法。
Object peek( )———–返回位于栈顶的元素,但是并不在堆栈中删除它。
Object pop( )————返回位于栈顶的元素,并在进程中删除它。
Object push (Object element )———将element压入堆栈,同时也返回element。
int size( )————返回栈中的元素个数
扩展要求:
1、栈中存放元素个数不受限制
2、 int search(Object element)———在堆栈中搜索element,如果发现了,则返回它相对于栈顶的偏移量。否则,返回-1。
*/
public class DuiZhan {
//存放元素的数组
private int[] elements = new int[10];
//指向栈顶,元素的个数
private int point = 0;
public void push(int element){
//数组扩容
if(point == elements.length){
//保存原数组
int[] tmp = elements;
//创建新数组
elements = new int[elements.length * 2];
System.arraycopy(tmp, 0, elements, 0, tmp.length);
}
elements[point] = element;
point++;
}
public int pop(){
int ret = elements[point - 1];
//取出后为空
elements[point - 1] = 0;
point--;
return ret;
}
public int peek(){
//取出不为空
return elements[point - 1];
}
public int size(){
return point;
}
public int search(int element){
int s= 0;
for(int i = 0; i < elements.length; i++){
if( element == elements[i] ){
break;
}else{
s++;
if(s == elements.length){
return -1;
}
}
}
return s;
}
}
测试类
public static void main(String[] args) {
DuiZhan zhan = new DuiZhan();
zhan.push(5);
zhan.push(6);
System.out.println(zhan.peek());
System.out.println(zhan.peek());
System.out.println(zhan.peek());
System.out.println(zhan.size());
System.out.println(zhan.search(1));
System.out.println(zhan.pop());
}