linklist模拟队列 栈

 LinkedList是用双向链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。

底层是一个双向链表,链表擅长插入和删除操作,队列和栈最常用的2种操作都设计到插入和删除



import java.util.LinkedList;

import java.util.Queue;

//用linkedList模拟队列,因为链表擅长插入和删除

public class Hi {

    public static void main(String [] args) { //做剑指offer遇见过这个数结

        Queue<String> queue = new LinkedList<String>();

        //追加元素

        queue.add("zero");

        queue.offer("one");

        queue.offer("two");

        queue.offer("three");

        queue.offer("four");

        System.out.println(queue);//[zero, one, two, three, four]

        //从队首取出元素并删除

        System.out.println(queue.poll());// zero

        System.out.println(queue.remove());//one

        System.out.println(queue);//[two, three, four]

        //从队首取出元素但是不删除

        String peek = queue.peek();

        System.out.println(peek); //two

        //遍历队列,这里要注意,每次取完元素后都会删除,整个

        //队列会变短,所以只需要判断队列的大小即可

        while(queue.size() > 0) {

            System.out.println(queue.poll());

        }//two three four

    }

}

//用linkedList模拟栈,因为链表擅长插入和删除

import java.util.Deque;

import java.util.LinkedList;

 

public class Hi {

    public static void main(String[] args) {

        /*模拟栈,这是从头开始进来的*/

        Deque<String> deque = new LinkedList<String>();

        /*Pushes an element onto the stack

         *at the head of this dequeue */

        deque.push("a");

        deque.push("b");

        deque.push("c");

        System.out.println(deque); //[c, b, a]

        //获取栈首元素后,元素不会出栈

        System.out.println(deque.peek());//c

        while(deque.size() > 0) {

            //获取栈首元素后,元素将会出栈

            System.out.println(deque.pop());//c b a

        }

        System.out.println(deque);//[]

         

        /*模拟栈*/

        deque.offerLast("a");

        deque.offerLast("b");

        deque.offerLast("c");// [a, b, c]

        while(!deque.isEmpty())

            System.out.println(deque.pollLast());

    }   // 先输出c再b最后a

}

import java.util.Stack;

//没有用到接口编程

public class Hi {

    public static void main(String[] args) {

      Stack<Integer> s = new Stack<Integer>();

      s.push(1);

      s.push(2);// [1,2]

      s.push(3);// [1,2,3]

      while(!s.isEmpty()){

          System.out.println(s.pop());

      }//依次输入 3 接着是2 ,然后1

    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值