`

使用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
///

 

 

分享到:
评论

相关推荐

    使用LinkedList模拟堆栈

    在计算机科学中,堆栈和队列是两种基础的数据结构,它们在算法和程序...文件名"QueueStack"可能表示这个项目或代码示例同时包含了队列和堆栈的实现。理解这些基本数据结构及其操作对于学习和解决各种编程问题至关重要。

    JAVA利用LinkedList构造栈与队列

    LinkedList不仅可以作为列表使用,还可以被巧妙地利用来构建栈(Stack)和队列(Queue)这两种基本数据结构。在本篇内容中,我们将探讨如何通过LinkedList实现栈和队列,以及它们在实际编程中的应用。 首先,栈是一...

    用LinkedList实现队列和栈

    本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 ### 1. 队列(Queue) 队列是一种先进先出(FIFO, First In First Out)的数据结构。在Java中,可以使用`...

    map,list,set,stack,queue,vector等区别和特点1

    本文将深入探讨标题和描述中提到的一些关键集合类型,包括Map、Set、List、Queue、Stack以及它们的特点和用法。 首先,Collection接口是所有集合类型的父接口,它分为两个主要子接口:List和Set。List接口用于存储...

    Java_Stack_Queue:Java中使用链表的堆栈和队列实现

    通过提供的Java_Stack_Queue-master文件,你可以找到具体实现这些功能的示例代码,进一步学习和实践链表实现的堆栈和队列。这个项目可能包括了测试用例,展示了如何使用这些自定义的数据结构来处理不同的问题。在...

    stack_queue_p2pchat_practice:只是使用Stack和Queue技术的Java实践聊天应用程序

    在这个名为"stack_queue_p2pchat_practice"的项目中,我们主要关注的是如何利用Java中的Stack和Queue数据结构来实现一个简单的点对点(P2P)聊天应用程序。Stack和Queue是两种基本的线性数据结构,它们在程序设计中...

    部分Java数据结构使用

    Java中的LinkedList实现了Deque(双端队列)接口,可以作为Queue使用。Queue接口定义了enqueue(add())、dequeue(remove())等方法,而PriorityQueue则提供了一个根据元素自然排序或自定义比较器进行排序的队列。 ...

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

    在Java中,除了LinkedList,还可以使用ArrayDeque类来实现栈和队列,ArrayDeque提供了更高效的操作,因为它基于数组而不是链表。 在实际应用中,LinkedList适合于频繁插入和删除的场景,因为这些操作的时间复杂度为...

    Lists_Stack_Queue_PriorityQueue.java

    在Java编程语言中,`Lists`, `Stack`, `Queue`, 和 `PriorityQueue` 是四个重要的数据结构,它们各自在不同的场景下发挥着关键作用。这些数据结构是Java集合框架的一部分,帮助开发者有效地组织和操作数据。 1. **...

    stack_queue

    在IT行业中,数据结构是编程基础的重要组成部分,而栈(Stack)和队列(Queue)是两种最基本且广泛使用的数据结构。在这个名为"stack_queue"的项目中,我们可以推测它可能是一个关于Java实现栈和队列操作的学习资源...

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

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

    数据结构和算法在JavaScript电子书中解释和实现.zip

    2. "data-structures"目录:可能包含了各种数据结构的实现,如Array、LinkedList、Stack、Queue、HashMap、Tree等。 3. "algorithms"目录:可能包含了各种算法的实现,如排序、搜索、图算法等。 4. "examples"或...

    单链表,栈和队列(c的实现)

    同样可以使用单链表来实现。队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队首元素(front)。以下是一个队列的简单实现: ```c void enqueue(Queue queue, int item) { Node* newNode = (Node*)...

    金陵科技学院软件院大二上Java高级1209ListWildQueueStack.docx

    在示例中,我们使用LinkedList作为Queue的实现,因为LinkedList天生支持高效的添加和移除操作,这符合Queue的行为。`Queue&lt;Goods&gt;`声明了一个存储`Goods`对象的队列。`Goods`是自定义的类,包含了商品的名称、价格和...

    javase集合 温故而知新.doc

    在javase集合中,还有其他的接口和实现类,如Iterator接口、Enumeration接口、Stack接口等。Iterator接口用于遍历集合,Enumeration接口用于枚举集合,Stack接口用于实现栈结构。 javase集合为Java语言提供了强大的...

    java 栈和队列的小例子

    Java中可以使用LinkedList、ArrayList或PriorityQueue来实现队列,其中LinkedList和ArrayList适用于普通队列,而PriorityQueue则用于优先级队列。以下是一个使用LinkedList实现的队列示例: ```java import java....

    list集合案例增、删、改、查,ArrayList与LinkedList的区别,LinkedList堆栈/队列的开发

    本篇文章将深入探讨`List`集合的各种操作,包括增、删、改、查,以及`ArrayList`和`LinkedList`两种实现`List`接口的类之间的区别。同时,我们还将讨论如何利用`LinkedList`实现堆栈和队列的功能,并了解`List`集合...

    基于 Java 实现的队列和堆栈

    - **实现方式**:常见的队列实现有`LinkedList`(链表实现)和`ArrayDeque`(数组双端队列实现)。链表实现允许快速的插入和删除,而数组实现则在空间效率上更优。 - **应用**:队列常用于任务调度、事件处理、多...

    数据结构C和java

    Java作为面向对象的语言,提供了丰富的内置数据结构,如ArrayList、LinkedList、Stack、Queue等,这些都是对原始数据结构的封装,使用起来更加方便。Java的ArrayList实现了动态数组,支持快速随机访问;LinkedList是...

Global site tag (gtag.js) - Google Analytics