在数据结构中,栈和队列是两种重要的线性数据结构。它们的主要不同在于:栈中存储的元素,是先进后出;队列中存储的元素是先进先出。我们接下来通过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集合演示栈和队列的操作的更多相关文章

  1. LinkedList集合 实现栈和队列

    LinkedList集合的底层是链表结构实现的,所以可以模拟栈(先进后出)和队列(先进先出). 方法: addFirst() //添加元素到列表的起始位置 addLast() //添加元素到列表的结束 ...

  2. 剑指Offer的学习笔记(C#篇)-- 用两个栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 一 . 概念! 首先要理解栈和队列的概念. 1. 栈:咱可以简单的把栈理解成装羽毛球的球桶.或者我们吃的 ...

  3. 【C#数据结构系列】栈和队列

    一:栈 栈和队列也是线性结构,线性表.栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制.栈的操作只能在表的一端进行,队列的插入操作 ...

  4. Go实现栈与队列基本操作

    @ 目录 一 前言 二 实现栈与队列基本操作 2.1 栈基本操作 2.2 队列基本操作 三 用栈实现队列 3.1 理论 3.2 算法题 3.3 思路 3.4 代码部分 四 用队列实现栈 4.1 理论 ...

  5. java 集合 Connection 栈 队列 及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  6. java集合详解(附栈,队列)

    1 集合 1.1 为什么会出现集合框架 [1] 之前的数组作为容器时,不能自动拓容 [2] 数值在进行添加和删除操作时,需要开发者自己实现添加和删除. 1.2 Collection接口 1.2.1 C ...

  7. 集合第七发练习之利用ArrayList做栈、队列

    栈:后进先出. 队列:先进先出. 利用这个核心思想,结合集合的add和remove方法做的栈和队列如下代码所示: 主类(t1()和t2()分别演栈和队列):   package cn.hncu.myS ...

  8. LinkedList学习:API调用、栈、队列实现

    参考的博客 Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例 如果你想详细的区了解容器知识以及本文讲的LinkedList,我推荐你去看这篇博客和这个做个的容器系列 Lin ...

  9. Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析

    重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...

随机推荐

  1. Zabbix 3.0 基础介绍 [一]

    zabbix 简介 Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利 zab ...

  2. StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)

      在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法. 一.截取   StringUtils ...

  3. dedecms注入漏洞

    版本:Powered by DedeCMSV57_GBK © 2004-2011 DesDev Inc. 漏洞利用EXP:plus/recommend.php?action=&aid=1&am ...

  4. cinder块存储 后端采用lvm、nfs安装配置

    #cinder块存储 后端采用lvm.nfs安装配置 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder ...

  5. 详解spl_autoload_register()函数

    一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: printit.class.php    <?php    class  ...

  6. List<Object>中,以Object的某一属性值为参照进行排序,选取最大记录的解决办法

    一.场景:java web, 在一列表中选取一条记录,该记录的某一个属性值在此List中为最大值: List的格式为List<Object>,其中Object为定义的Vo或者Po类,其中包 ...

  7. Netty之二进制文件传输

    传输会话简要 客户端发起一个文本请求给服务器端, 服务器端解析里面文本, 返回文件给客户端, 客户端解析文件 服务器端 因为示例文件比较小, 所以没有做分段传输, 而是直接一次性把整个文件byte[] ...

  8. 【luogu P2002】消息扩散

    https://www.luogu.org/problem/show?pid=2002 SCC缩点的模板题,缩点后统计入度为0的点的数量就完了. #include <iostream> # ...

  9. iscroll使用之页面卡顿问题

    最近在开发项目时,遇到一个问题,使用iscroll实现的页面滚动,测试时发现在chrome浏览器中的模拟移动设备页面不能平滑滚动,有卡顿现象,在android手机端也有同样的问题. 在github上搜 ...

  10. 》》jqurey mobile 初

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...