栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java的栈与队列(LinkedList实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java的栈与队列(LinkedList实现)

Java的栈与队列(linkedList实现)

队列:

linkedList queue = new linkedList<>();    
offer(e):     加入到队尾                  addLast(e)/offerLast(e)    
poll():       从队首取出并删除             poll()/removeFirst()    
peek():       从队首取出不删除             getFirst()/peek()

栈:

linkedList stack = new linkedList<>();    
push(e):      压栈                  	 addFirst(e)/offerFirst()  
pop():        弹栈                       pop()/removeFirst()    
peek():       取出栈顶元素,不删除        getFirst()/peek()

栈和队列都是用linkedList实现的,并且peek()方法名相同,但是对于栈来说peek()获取的是栈顶元素,对于队列来说peek()获取的是队首元素,那么
栈的peek()和队列的peek()会不会弄混呢??
例如:栈{1,2},队列{3,4}

linkedList linkedList = new linkedList<>();            
linkedList.push(1);            
linkedList.push(2);            
linkedList.offer(3);            
linkedList.offer(4);            
System.out.println(linkedList.peek());     //查看栈顶元素:2            
System.out.println(linkedList.pop());        //弹栈:2            
System.out.println(linkedList.peek());     //查看栈顶元素:1            
System.out.println(linkedList.pop());        //弹栈:1            
System.out.println(linkedList.peek());     //查看队首元素:3            
System.out.println(linkedList.poll());       //出队:3            
System.out.println(linkedList.peek());     //查看队首元素:4            
System.out.println(linkedList.poll());       //出队:4

查看源码分析原因:
第一个push:底层调用 addFirst(e),新建一个节点插入到链表头,此时 dummy -> 1
第二个push:底层调用 addFirst(e),新建一个节点插入到链表头,此时 dummy -> 2 -> 1

第一个offer:底层调用 add(e), 新建一个节点插入到链表尾,此时 dummy -> 2 -> 1 -> 3
第二个offer:底层调用 add(e), 新建一个节点插入到链表尾,此时 dummy -> 2 -> 1 -> 3 -> 4

peek() 操作第一个节点,返回链表的第一个节点值

pop()底层调用removeFirst(),poll()操作第一个节点,都会返回并删除链表的第一个节点,所以输出结果是 2,1,3,4

总结:
因为栈和队列底层都是linkedList,是一个双向链表,两者输入和输出的唯一区别就在于:压栈会将节点加入到链表头,入队会将节点添加到链表尾,出栈和出队时都是将链表头返回并删除,所以栈和队列的输入和输出逻辑不会弄混!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号