LinkedList认识-实现栈的操作

LinkedList本身添加了可以使其用于栈、队列和双端队列的方法,数据以链接方式存储,Deque为队列接口,Entry是链接数据结构

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
    private transient Entry<E> header = new Entry<E>(null, null, null);
    private transient int size = 0;


因为LinkedList也实现了List接口的其它方法,下面根据栈实现的方法重新自己写一遍只实现栈的操作,如下:

/**
 * 使用linkedList实现栈操作
 * @author sunny
 * LinkedList实现了和ArrayList一样的List接口,它在执行一些插入和移除操作时比ArrayList效率高,
 * 因为它底层是链表的实现方式,但是它在随机访问时没有ArrayList效率高,数组可以直接访问下标
 * 栈的特点是先进后出
 * @param <T>
 */
public class Stack<T> {
private LinkedList<T> storage = new LinkedList<T>();

public void push(T v){
storage.addFirst(v);
}
public T peek(){
return storage.getFirst();
}
public T pop(){
return storage.removeFirst();
}
public boolean empty(){
return storage.isEmpty();
}


public static void main(String[] args){
Stack<String> stack = new Stack<String>();
for(String s : "This is a dog!".split(" ")){
stack.push(s);
}
while (!stack.empty()) {
System.out.println(stack.pop());
}
}

}

输出结果:

dog!
a
is
This

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值