`
schy_hqh
  • 浏览: 542872 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(集合)LInkedList---队列与栈

 
阅读更多

 

LinkedList提供了addFirst(),addLast(),removeFirst()方法操作集合中的元素

基于这些功能,就可以实现队列与栈的数据结构。

 

队列---先进先出FIFO

 

 

import java.util.Collection;
import java.util.LinkedList;


public class Queue<E> {
	private LinkedList<E> link;
	
	Queue() {
		link = new LinkedList<E>();
	}
	
	public void add(E e) {
		link.addLast(e);
	}
	
	public void addAll(Collection<? extends E> coll) {
		link.addAll(coll);
	}
	
	public E getNext() {
		return link.removeFirst();
	}
	
	public boolean isEmpty() {
		return link.isEmpty();
	}
}

 

 

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("123");
		list.add("abc");
		list.add("000");
		
		printQueue(list);
		
	}



	private static void printQueue(List<String> list) {
		Queue<String> queue = new Queue<String>();
		queue.add("------------");
		queue.addAll(list);
		queue.add("$$$$$$$$$$$$");
		
		while(!queue.isEmpty()) {
			System.out.println(queue.getNext());
		}
	}

 结果

------------
123
abc
000
$$$$$$$$$$$$

 

 

栈---后进先出FILO

 

import java.util.Collection;
import java.util.LinkedList;


public class Stack<E> {
	private LinkedList<E> link;
	
	public Stack() {
		link = new LinkedList<E>();
	}
	
	public void add(E e) {
		link.addFirst(e);
	}

	public void addAll(Collection<? extends E> coll) {
		Object[] elements = coll.toArray();
		int size = elements.length;
		for(int index=size-1;index>=0;index--)
			add((E)elements[index]);
	}
	
	public E getNext() {
		return link.removeFirst();
	}
	
	public boolean isEmpty() {
		return link.isEmpty();
	}
}

 

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("123");
		list.add("abc");
		list.add("000");
		
		printStack(list);
		
	}

	public static void printStack(List<String> list) {
		Stack<String> stack = new Stack<String>();
		stack.add("------------");
		stack.addAll(list);
		stack.add("$$$$$$$$$$$$");
		while(!stack.isEmpty()) {
			System.out.println(stack.getNext());
		}
	}

 结果

$$$$$$$$$$$$
123
abc
000
------------

 

分享到:
评论

相关推荐

    java中LinkedList集合类实现栈和队列.doc

    java中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.docjava中LinkedList集合类实现栈和队列.doc

    Java集合框架源码剖析:LinkedList

    总体介绍  LinkedList同时实现了List接口和Deque...关于栈或队列,现在的是ArrayDeque,它有着比LinkedList(当作栈或队列使用时)有着更好的性能。  LinkedList底层通过双向链表实现,本节将着重讲解插入和删

    StructuresandAlgorithms-Code:重温数据结构与算法,代码实践

    栈实现队列、队列实现栈 双端队列-返回滑动窗口的最大值 小顶堆-返回数据流的第k大元素 leetcode建议练习题号: 业界应用 如何实现浏览器的前进后退功能 hash 散列表即键值对的集合,js里常用{ }、new Map()表示 知识...

    siftjava源码-MaoDataStructures:Arrays(数组)、Stacks(栈)、Queues(队列)、LinkedList

    Arrays(数组)、Stacks(栈)、Queues(队列)、LinkedList(链表)、Recursion(递归思想)、BinarySearchTree(二分搜索树)、Set(集合)、Map(映射)、Heap(堆)、PriorityQueue(优先队列)、SegmentTree(线段树)、Trie(字典树)...

    DataStructureJava:主要数据结构——java中的简单实现

    -&gt; JDK(Java集合)-&gt; Guava(谷歌)-&gt; Commons-collections(Apache) 主要抽象数据结构——ADS列表(ArrayList、LinkedList、Vector)栈(FIFO)队列(LIFO、Deque——双端队列) interface Map&lt;Key&gt; TreeMap&lt;K&gt; ...

    Java超详细!Java实现数据结构PPT课件

    链表(LinkedList) 单向链表 双向链表 循环链表 静态链表 栈(Stack) 队列(Queue) 双端队列(Deque) 循环队列 哈希表(HashTable) 树形数据结构 二叉树(BinaryTree)、二叉搜索树(BinarySearchTree、BST) ...

    java内部学习笔记.docx

    4.14 List集合的实现类ArrayList和LinkedList 39 4.15 Iterator迭代器 42 4.16泛型 43 4.17增强型for循环 43 4.18 List高级-数据结构:Queue队列 44 4.19 List高级-数据结构:Deque栈 44 4.20 Set集合的实现类...

    java8集合源码分析-LearningNotes:Java笔记

    数组、栈、队列、链表、二分搜索树、集合、映射、优先队列、堆、线段树、Trie、并查集、AVL、红黑树、哈希表 数据处理典型案例,逐渐更新 :hot_beverage: Java 、、基本概念、面向对象、基本数据类型与运算、字符串...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    4.5.1 一个简单的想法(不能直接使用) 4.5.2 展开 4.6 树的遍历 4.7 b树 4.8 标准库中的集合与映射 4.8.1 关于set接口 4.8.2 关于map接口 4.8.3 treeset类和treemap类的实现 4.8.4 使用多个映射...

    数据结构与算法分析-Java语言描述(第2版)_1_2

    4.5.1 一个简单的想法(不能直接使用) 4.5.2 展开 4.6 树的遍历 4.7 b树 4.8 标准库中的集合与映射 4.8.1 关于set接口 4.8.2 关于map接口 4.8.3 treeset类和treemap类的实现 4.8.4 使用多个映射...

    javalruleetcode-dsal:数据结构与算法个人整理

    集合与映射 :Hash 表 树形结构: : 二分查找树 : 平衡树 : 红黑树 : 线段树 : 字典树 其他: : 图 : 跳表 : 并查集 JDK 集合源码 基本 List, Set, Queue, Map ArrayList, LinkedList, Vector, ...

    JAVA入门学习笔记(1)– Collection集合的基础知识

    目录1. 集合的概念2. 集合的分类3. 对集合操作的接口3.1 Collection接口3.2 List接口3.3 Set接口4....数据结构1.1 栈1.2 队列1.3 数组1.4 链表1.5 树1.5.1 二叉树1.5.2 红黑树2. 关于泛型2.1 概念2.2 定义和使用2.3 泛

    JavaSourceCodeAnalysis:JDK二进制阅读笔记,包括Java常用集合类和Java常用和发工具(同步工具,线程安全集合,线程池)两个部分-java source code analysis

    平均情况下,作为栈比Stack效率更高,作为层次比LinkedList效率更高。 对于整型元素而言,最小堆。 放 | 设置中位数出现重复元素。 HashSet完全依赖HashMap(将HashMap实例作为一个属性),Map中的键用于存储元素...

    数据结构与算法分析Java语言描述(第二版)

    remove方法对LinkedList类的使用3.3.5 关于ListIterator接口3.4 ArrayList类的实现3.4.1 基本类3.4.2 迭代器、Java嵌套类和内部类3.5 LinkedList类的实现3.6 栈ADT3.6.1 栈模型3.6.2 栈的实现3.6.3 应用3.7 队列...

    数据结构与算法分析_Java语言描述(第2版)

    4.8 标准库中的集合与映射 4.8.1 关于Set接口 4.8.2 关于Map接口 4.8.3 TreeSet类和TreeMap类的实现 4.8.4 使用多个映射的例 小结 练习 参考文献 第5章 散列 5.1 一般想法 5.2 散列函数 5.3 分离链接法 5.4 不用...

    数据结构与算法分析_Java语言描述(第2版)]

    remove方法对LinkedList类的使用3.3.5 关于ListIterator接口3.4 ArrayList类的实现3.4.1 基本类3.4.2 迭代器、Java嵌套类和内部类3.5 LinkedList类的实现3.6 栈ADT3.6.1 栈模型3.6.2 栈的实现3.6.3 应用3.7 队列...

    数据结构与算法分析 Java语言描述第2版

    remove方法对LinkedList类的使用3.3.5 关于ListIterator接口3.4 ArrayList类的实现3.4.1 基本类3.4.2 迭代器、Java嵌套类和内部类3.5 LinkedList类的实现3.6 栈ADT3.6.1 栈模型3.6.2 栈的实现3.6.3 应用3.7 队列...

    Java知识集.docx

    数据结构与算法:包括数组、链表、栈、队列、二叉树、图、堆、排序算法、查找算法等。 图形用户界面(GUI)编程:包括窗口、面板、按钮、标签、文本框、列表框、菜单、对话框等组件的使用、事件处理等。 网络编程:...

Global site tag (gtag.js) - Google Analytics