用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构。它们的主要不同在于:栈中存储的元素,是先进后出;队列中存储的元素是先进先出。我们接下来通过LinkedList集合来演示栈和队列的操作。
import java.util.LinkedList; /**
* 用LinkedList集合演示栈和队列操作
*
* @author 李章勇
*/
public class Test1 {
public static void main(String[] args) {
LinkedList<String> test = new LinkedList<>();
//1.演示栈Stack操作
System.out.println("1.演示栈Stack操作-----");
System.out.println("(1)向栈中添加元素 push()");
test.push("a");
test.push("b");
test.push("c");
test.push("e");
test.push("f");
test.push("g");
System.out.println(test.toString());
System.out.println("(2)从栈中取元素,但是不删除 peek()");
String peek = test.peek();
System.out.println("用peek()取出一个元素:" + peek.toString());
System.out.println("取出一个元素后,集合为:" + test.toString());
System.out.println("(3)从栈中取元素,并且删除 pop()");
String pop = test.pop();
System.out.println("用pop()取出一个元素:" + pop);
System.out.println("取出一个元素后,集合为:" + test.toString());
test.clear();
//2.演示队列Queue操作
System.out.println("2.演示队列Queue操作-----");
System.out.println("(1)向队列中添加元素 add()");
test.add("a");
test.add("b");
test.add("c");
test.add("d");
test.add("e");
test.add("f");
System.out.println(test.toString());
System.out.println("(2)从队列中移除元素 element()");
//注意:与peek()不同的是,如果队列为空,element()会返回一个异常,为此,需要先判断test集合是否为空
if (test != null) {
String element = test.element();
System.out.println("用element取出一个元素:" + element);
System.out.println("取出一个元素后,集合为:" + test.toString());
}
System.out.println("(3)从队列中移除元素 poll()");
String poll = test.poll();
System.out.println("用poll()取出一个元素:" + poll);
System.out.println("取出一个元素后,集合为:" + test.toString());
}
}
运行结果如下:
1.演示栈Stack操作-----
(1)向栈中添加元素 push()
[g, f, e, c, b, a]
(2)从栈中取元素,但是不删除 peek()
用peek()取出一个元素:g
取出一个元素后,集合为:[g, f, e, c, b, a]
(3)从栈中取元素,并且删除 pop()
用pop()取出一个元素:g
取出一个元素后,集合为:[f, e, c, b, a]
2.演示队列Queue操作-----
(1)向队列中添加元素 add()
[a, b, c, d, e, f]
(2)从队列中移除元素 element()
用element取出一个元素:a
取出一个元素后,集合为:[a, b, c, d, e, f]
(3)从队列中移除元素 poll()
用poll()取出一个元素:a
取出一个元素后,集合为:[b, c, d, e, f]
用LinkedList集合演示栈和队列的操作的更多相关文章
- LinkedList集合 实现栈和队列
LinkedList集合的底层是链表结构实现的,所以可以模拟栈(先进后出)和队列(先进先出). 方法: addFirst() //添加元素到列表的起始位置 addLast() //添加元素到列表的结束 ...
- 剑指Offer的学习笔记(C#篇)-- 用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 一 . 概念! 首先要理解栈和队列的概念. 1. 栈:咱可以简单的把栈理解成装羽毛球的球桶.或者我们吃的 ...
- 【C#数据结构系列】栈和队列
一:栈 栈和队列也是线性结构,线性表.栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制.栈的操作只能在表的一端进行,队列的插入操作 ...
- Go实现栈与队列基本操作
@ 目录 一 前言 二 实现栈与队列基本操作 2.1 栈基本操作 2.2 队列基本操作 三 用栈实现队列 3.1 理论 3.2 算法题 3.3 思路 3.4 代码部分 四 用队列实现栈 4.1 理论 ...
- java 集合 Connection 栈 队列 及一些常用
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...
- java集合详解(附栈,队列)
1 集合 1.1 为什么会出现集合框架 [1] 之前的数组作为容器时,不能自动拓容 [2] 数值在进行添加和删除操作时,需要开发者自己实现添加和删除. 1.2 Collection接口 1.2.1 C ...
- 集合第七发练习之利用ArrayList做栈、队列
栈:后进先出. 队列:先进先出. 利用这个核心思想,结合集合的add和remove方法做的栈和队列如下代码所示: 主类(t1()和t2()分别演栈和队列): package cn.hncu.myS ...
- LinkedList学习:API调用、栈、队列实现
参考的博客 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 如果你想详细的区了解容器知识以及本文讲的LinkedList,我推荐你去看这篇博客和这个做个的容器系列 Lin ...
- Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析
重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...
随机推荐
- mysql b-tree 索引下联合索引的顺序测试方案
使用联合索引需要注意的列顺序比如在使用select * from user where x=1 and y=2;的时候,应该需要建立的索引可能是 add key(x,y)如何确定索引的顺序一般经验而言 ...
- Vuejs-组件-<slot> 标签分发内容
资料来自:https://cn.vuejs.org/v2/guide/components.html#具名-Slot 在官方文档的基础上,更加细致的讲解代码. <slot> 标签中的任何内 ...
- SurfaceView 及相关概念
============================================================= SurfaceView=========================== ...
- 翻译连载 | 附录 A:Transducing(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- C#Winform窗体 DataGridView全选按钮的实现方式
最近,在做CS程序遇到一个头疼的问题,datagridview列表的全选按钮遇到各种问题,做的是自适应窗体大小,当窗体最大化导致全选按钮出现与列表数据不一致,特别不搭配,试了很久,网上也找了好多资料各 ...
- Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError
Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError 这个问题折腾了2个小时,最后解决了,Stack Overflow 上也有一次类似的问题, ...
- tnsping非常慢
最近给同事虚拟机上安装了一个11g数据库,发现一个奇怪的问题,用windows客户段连接时候非常慢,慢到不能容忍的地步,但是本地os验证登录没有问题,速度非常快,初步定为问题出在监听上,于是我tnsp ...
- 离开Visual Studio C#的编译(你不知道的C#)
很多人一开始学习.net 第一天必定是安装Visual studio 或者很多关于C#学习的书上第一章节必定是告诉你要你下载一个vs 其实没有vs未必就不能开发了,只是可能说vs给我的开发带来了很多的 ...
- Python函数篇(3)-内置函数、文件处理
1.内置函数 上一篇文章中,我重点写了reduce.map.filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对 ...
- linux nginx搭配https
微信小程序upload接口必须是https请求,所以就搭建https 1.申请ssl证书 这里用的是腾讯云提供的免费ssl. https://console.qcloud.com/ssl?_ga=1. ...