Stack源码解析及用LinkedList实现Stack

来源:互联网 发布:水仙花数java三位数 编辑:程序博客网 时间:2024/06/06 03:18

(1)JDK源码解析


类Stack代表的是一种后进先出的堆对象。继承Vector类的5个方法以允许vector被作为一个栈。提供了最普通的添加和删除操作,同时也提供了取出栈顶元素的方法,判断栈是否为空的方法,和搜索某个元素和发现它离栈顶有多远。栈刚创建,是空的。更多完整和一致后进先出的集合栈操作方法由Deque接口和它的实现提供,


从后面向前面找是否存在某个元素,存在,返回在整个栈中的位置,(距离第一个元素的距离),不存在,就返回-1.


(2)继承LinkedList实现Stack

import java.util.LinkedList;


public class StackExe<E> extends LinkedList<E> {

private LinkedList<E> stack = new LinkedList<E>();//创建一个LinkedList

        //添加元素(在尾部追加栈顶元素)

public void push(E e){
stack.addLast(e);
}

        //删除元素(如果栈是空,就返回null,如果栈不是空,就删除栈顶元素)

public E pop(){
if(isEmpty()){
return null;
}
return stack.removeLast();
}

        //查询栈顶的元素

public E peek(){
if(isEmpty()){
return null;
}
return stack.getLast();
}

 
        //判断是否为空
public boolean isEmpty(){
return stack.isEmpty();
}

public static void main(String args[]){
StackExe exe = new StackExe();
System.out.println(exe.peek());//null
exe.push("aaa");//添加元素
exe.push("bbb");
exe.push("ccc");
exe.push("ddd");
exe.push("eee");
while(!exe.isEmpty()){//如果栈不为空,循环打印
System.out.print(exe.pop()+" ");//eee,ddd,ccc,bbb,aaa
}
}
}
原创粉丝点击