栈只能在栈顶操作
package suanfa;
public class PersonStack<T> implements Stack<T>{ Stack为自定义的一个接口
private int size;
private Node<T> top;
@Override
public void clear() {
this.top=null;
this.size=0;
}
@Override
public boolean isEmpty() {
return this.top==null;
}
@Override
public T peek() {//返回栈顶元素
if(this.top==null)
return null;
return this.top.getData();
}
@Override
public T pop() {
Node<T> out=this.top;
if(this.top==null){
return null;
}
this.top=this.top.getNext();
this.size--;
return out.getData();
}
@Override
public void push(T elment) {
Node<T> high=new Node<T>(elment,top);
this.top=high;
this.size++;
}
@Override
public int size() {
return this.size;
}
/**测试栈
* @param args
*/
public static void main(String[] args){
PersonStack<Integer> testStack=new PersonStack<Integer>();
testStack.push(3);
testStack.push(5);
testStack.push(2);
testStack.push(1);
testStack.push(6);
System.out.println("Size:"+testStack.size);
System.out.println("栈顶元素:"+testStack.peek());
while(!testStack.isEmpty()){
System.out.println(testStack.pop());
}
System.out.println("Size:"+testStack.size);
System.out.println("栈顶元素:"+testStack.peek());
}
}
class Node<T>{//结点 用于保存结点信息
private T data;
private Node<T> next;
public Node(){
this.data=null;
this.next=null;
}
public Node(T data){
this.data=data;
this.next=null;
}
public Node(T data,Node<T> next){
this.data=data;
this.next=next;
}
public void setData(T data){
this.data=data;
}
public T getData(){
return this.data;
}
public void setNext(Node<T> next){
this.next=next;
}
public Node<T> getNext(){
return this.next;
}
}
自定义的接口Stack<T>
package suanfa;
public interface Stack<T> {
public void clear();
public boolean isEmpty();
public T peek();
public T pop();
public void push(T elment);
public int size();
}