`

使用LinkedList实现Stack和Queue

 
阅读更多

虽然在java.util包中有Stack,但是不赞成使用。建议使用如下的Stack  !!!

 

 

先看看是如何实现的:

package com.wjy.linkedlist.stack;

import java.util.LinkedList;

public class Stack<T> {
	private LinkedList<T> storage=new LinkedList<T>();
	public void push(T t){
		storage.addFirst(t);
	}
	public T peek(){
		return storage.getFirst();
	}
	public T pop(){
		return storage.removeFirst();
	}
	public boolean isEmpty(){
		return storage.isEmpty();
	}
	public String toString(){
		return storage.toString();
	}
}

 看看测试代码:

package com.wjy.linkedlist.stack;

public class MainTest {
	public static void main(String args[]){
		Stack<String> myStack=new Stack<String>();
		for(String item : "hello my baby".split(" ")){
			myStack.push(item);
		}
		while(!myStack.isEmpty()){
			System.out.println(myStack.pop());
		}
	}
}
/*output
baby
my
hello
///

 

//********************************************************************************************************************************

先看看最普遍的Queue,是java.util包中的。需要LinkedList来实例化它:

package com.wjy.linkedlist.queue;

import java.util.LinkedList;
import java.util.Queue;

public class QueueTest {
	public static void main(String args[]){
		Queue<String> myQueue=new LinkedList<String>();
		for(String item : "hello my baby".split(" ")){
			myQueue.offer(item);
		}
		while(!myQueue.isEmpty()){
			System.out.println(myQueue.poll());
		}
	}
}

 运行结果:

hello
my
baby

 

以上是普通的队列。

 

注意注意:想想这样一种情况,在飞机场,当飞机临近起飞时,这架飞机的乘客可以插队先行登机。所以PriorityQueue就是为了这种情形设计的。

但是注意:Integer,String和Character可以和PriorityQueue一起使用的原因是:这些类已经内建了自然排序。如果你想在PriorityQueue中使用自己的类,就必须包括额外的功能以产生自然排序,或者必须提供自己的Comparator。

 

看看PriorityQueue的使用:

package com.wjy.priorityQueue;

import java.util.PriorityQueue;

public class PriorityQueueTest {
	public static void main(String args[]){
		PriorityQueue<String> myQueue=new PriorityQueue<String>();
		for(String item : "hello my baby".split(" ")){
			myQueue.offer(item);
		}
		while(!myQueue.isEmpty()){
			System.out.println(myQueue.poll());
		}
	}
}
/*Output:
baby
hello
my
///

 

 

分享到:
评论

相关推荐

    部分Java数据结构使用

    java中List、LinkedList、Stack、Queue的简单使用,详情查看API

    stack_Queue_Doubly-LinkedList_AndIterators.java:CSci_211 的作业 #1

    csci 211 作业 1 简单链接数据结构 截止日期:20131 年 10 月 14 日,星期一 该作业提供 Eclipse 调试器、JUnit 测试、测试驱动开发和实现链接数据结构的接触和经验。 概述 该作业要求您实现和测试堆栈、队列、双向...

    Java集合框架源码剖析:LinkedList

     LinkedList同时实现了List接口和Deque接口,也是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直是个全能。当你需要使用栈或者队列时,可以...

    javalruleetcode-Algorithms:数据结构和算法

    算法和数据结构是有趣且实用的 Data Structure Array Stack / Queue PriorityQueue LinkedList Queue / Priority queue Stack Tree / Binary Search Tree HashTable Disjoint Set Trie BloomFilter LRU Cache ...

    leetcodepushfront-implement-stack-using-queues:使用队列实现堆栈

    您必须只使用队列的标准操作——这意味着只有向后推、从前面查看/弹出、大小和为空操作是有效的。 根据您的语言,队列可能不受本机支持。 您可以使用列表或双端队列(双端队列)来模拟队列,只要您仅使用队列的标准...

    普林斯顿算法课程 Robert Sedgewick

    普林斯顿算法课程视频资源,这是一门经典的数据结构与算法课,免费,分上下两部分,上部分内容包括Union-Find, basic data structures(Array, LinkedList, Queue, Stack, prioprity queue, symbol table...), ...

    数据结构

    数据结构主题: 单链表队列和堆栈双链表二叉搜索树相关代码挑战问题伸展目标: LRU缓存堆AVL树完成要求模块1:使用内置的Python列表以及您在模块1指导项目期间创建的Node和LinkedList类,实现Stack和Queue类。...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解2:Queue和LinkedList Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入...

    algorithms:数据结构、算法和问题

    算法 顾名思义,算法存储库包含对编码面试中提出的各种常见... 它提供了LinkedList、Stack、Queue、BinaryTree、Graph等各种数据结构的实现,也提供了一些著名的常用算法,如排序、字符串操作、数组问题和线程编程。

    Java 基础核心总结 +经典算法大全.rar

    LinkedList Queue接口Deque 接口 AbstractQueue 抽象类LinkedList ArrayDeque PriorityQueue 反射的思想及作用 反射的基本使用 获取类的 Class 对象构造类的实例化对象获取-个类的所有信息 获取类中的变量(Field) ...

    Java工程师面试复习指南

    Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和LinkedList Java集合详解:迭代器,快速失败机制与比较器 Java集合详解:HashMap和HashTable Java集合详解:深入理解...

    leetcode答案-myDataStructure:我的数据结构

    本程式库希望收集各种常用的资料结构方便使用, 程式全用c++写成 基础资料结构 收集一般资料结构课程会学到的东西 资料结构/演算法 程式 可参考题目(验证程式正确性) 二分搜索 排序问题 Heap LinkedList LinkedList ...

    【数据结构】Java 数据结构目录

    【队列Queue】队列 Queue、双端队列 DeQueue、循环队列 CircleQueue、双端循环队列 CircleDeque 源码实现(Java) 【栈Stack】栈 Stack 源码 【二叉搜索树BST】二叉搜索树 BST 实现源码 【AVL树】AVLTree 实现源码 ...

    javaarraylist源码-Data-Structures-Algorithms:使用Java编程语言的数据结构和算法源代码(包括Stac

    java arraylist源码数据结构算法 使用Java编程语言的数据结构和算法源代码(包括Stack,LinkedList,ArrayList,Queue和Binary Tree)

    约瑟夫环leetcode-DataStructure:数据结构与算法(Java实现)

    约瑟夫环 leetcode ...LinkedList双向链表实现解决约瑟夫环问题 04-栈 Stack利用java组合实现栈 05-队列 Queue队列实现 Deque双端队列实现 CircleQueue环形队列实现 CircleDeque环形双端队列实现 06-二叉树

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

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

    扩展矩阵leetcode-Algorithms-camp:算法营

    ArrayDeque实现了Deque接口,LinkedList实现了Deque,List接口 (1)对比: ArrayDeque 为数组结构,插入元素不能为null,无法确定数据量时,后期扩容会影响效率 LinkedList 链表结构,插入元素不能为null,无法确定...

    数据结构源码JS实现.zip

    1.tree 2.queue 3.stack 4.hash 5.linkedList 欢迎大家关注,私戳免费可以获取

    Algorithms:算法相关问题和解决方案

    实现堆栈和队列 - StackQueue.java 使用 min 函数实现堆栈 - StackWithMin.java 桶排序 - bucketSort.java finobacci 序列 - fibonacci.java 查找树是否平衡 - isBalanced.java 实现归并排序 - merge

    数据结构实现(C++版)

    2.1.Queue ........... 队列接口 2.2.Stack .............. 栈接口 2.3.Set .................. 集合接口 2.4.Map ............... 映射接口 2.5.Merger .......... 自定义函数接口 2.6.UnionFind ..... 并查集接口 ...

Global site tag (gtag.js) - Google Analytics