Java util package has provided the inner data structure "Stack",which extends from Vector<E>.In this place,I am going to do a sample explaination about "stack",which should a fundmental knowledge point in datastructure.stack likes a glass,and the elements you want to put into stack like balls.The first ball you put in the glass would be last took out,and vice versa.Therefore,stack has a attribute that first come last out.
And there are several member functions about this datastructure,push(),pop(),empty(),search() and peek(),all those function are very easy to understand.And,as a result of class Stack is extends from Vector,so this class is synchronized.And there are the open source code of Stack in Java programming language as follows:
package java.util;
public class Stack<E> entends Vector<E>{
//a default constructor
public Stack(){}
//push an element into stack
public E push(E){
addElement(E);//this function is a member function of Vector
return E;
}
//pop the top element of stack,and return it's value.
public synchronized E pop(){
E obj;
int len=size();
obj=peek();
removeElementAt(len-1);
return obj;
}
//return the top element of stack
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
//judge whether stack is empty or not/
public boolean empty(){
return size()==0;
}
//find the o's location in stack
public synchronized int search(Object o){
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
}