用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 迭代器 学习目标: ...
随机推荐
- 斯坦福大学自然语言处理第一课——引言(Introduction)
一.课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课:https://class.co ...
- kafka 集群搭建
环境:ubuntu14.04 版本:jdk1.8,zookeeper 3.4.10,kafka 2.11 搭建步骤: 1. 搭建zookeeper集群 参考链接:zookeeper集群搭建 2. 下载 ...
- LINQ学习系列-----1.4 匿名对象
本篇内容接着上一篇继续讲述,本篇简单讲解匿名对象 一.匿名对象介绍 上代码: var result=new { ID=, Name="张三", Age= ...
- C++ sqlite3解决中文排序问题
导言:sqlite3默认的编码方式为UTF8编码,而在UTF8编码下,中文不是按照拼音顺序编码的,所以想解决中文排序问题,必须自定义排序规则,将UTF8编码转换成GB2312编码(GB2312编码中文 ...
- CS窗体程序数据列表分页
以前,觉得winform程序分页很无趣,也没实际意义,直到近期的项目实践中让我认识到原来winform数据列表分页也是非常有必要的,因为由于数据量过大的情况,当窗体在初始加载数据的时候如果不做条件的限 ...
- win7下使用apache ab 比较测试node与 tomcat
最近在研究node,都说node单线程.事件环机制,高并发效率高,亲测一下,一探究竟 apache ab 安装 进入:http://httpd.apache.org/download.cgi#apac ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...
- python并发编程之多线程一
一,什么是线程 线程也被称为轻量进程计算机科学术语,指运行中的程序的调度单位. 线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程不拥有系统资源,只有运行必须的一些数据结构: ...
- GC 基础(转)
转自:http://blog.csdn.net/ning109314/article/details/10411495/ = GC 基础 ===================== JAVA堆的描述如 ...
- HDU5804--Price List
Price List Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) Tot ...