`

LinkedList实现的栈和队列

    博客分类:
  • java
阅读更多
LinkedList实现栈:
package com.shengsiyuan;

import java.util.LinkedList;

/**
 * 栈(先进后出)
 * 类: Stack <br>
 * 描述: TODO <br>
 * 作者: fangguanhong fangguanhong@163.com <br>
 * 时间: Sep 9, 2013 9:14:57 PM
 */
public class Stack {

	/**
	 * 存放栈里面的元素,维护栈里面的元素
	 */
	private LinkedList list = new LinkedList();

	/**
	 * 压栈
	 * 方法: push <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:16:02 PM
	 * @param o
	 */
	public void push(Object o) {
		list.addLast(o);
	}

	/**
	 * 弹出,从栈里面将最上面的一个元素弹出,相当于删除掉
	 * 方法: pop <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:16:35 PM
	 * @return
	 */
	public Object pop() {
		if (list != null && list.size() > 0) {
			// 直接返回删除掉的那个元素
			Object obj = list.removeLast();
			return obj;
		}
		return null;
	}

	/**
	 * 查看,只获取此元素本身用作查看,不把此元素弹出
	 * 方法: peek <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:17:27 PM
	 * @return
	 */
	public Object peek() {
		if (list != null && list.size() > 0) {
			return list.getLast();
		}
		return null;
	}

	/**
	 * 判断栈是否为空,判断栈里面是不是还有元素
	 * 方法: isEmpty <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:18:53 PM
	 * @return
	 */
	public boolean isEmpty() {
		// if (list != null && list.size() > 0) {
		// return true;
		// }
		// return false;
		return list.isEmpty();
	}
}




LinkedList实现队列:
package com.shengsiyuan;

import java.util.LinkedList;

/**
 * 队列(先进先出)
 * 类: Queue <br>
 * 描述: TODO <br>
 * 作者: fangguanhong fangguanhong@163.com <br>
 * 时间: Sep 9, 2013 9:11:11 PM
 */
public class Queue {

	/**
	 * 存放队列里面的元素,维护队列里面的元素
	 */
	private LinkedList list = new LinkedList();

	/**
	 * 将元素放到队列里面去
	 * 方法: put <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:11:56 PM
	 * @param o
	 */
	public void put(Object o) {
		list.addLast(o);
	}

	/**
	 * 从队列里面取出来一个元素,然后把这个元素删掉
	 * 方法: get <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:12:55 PM
	 * @return
	 */
	public Object get() {
		if (list != null && list.size() > 0) {
			// 直接返回删除掉的那个元素
			Object obj = list.removeFirst();
			return obj;

		}
		return null;
	}

	/**
	 * 判断队列是否为空
	 * 方法: isEmpty <br>
	 * 描述: TODO <br>
	 * 作者: fangguanhong fangguanhong@163.com <br>
	 * 时间: Sep 9, 2013 9:13:43 PM
	 * @return
	 */
	public boolean isEmpty() {
		// if (list != null && list.size() > 0) {
		// return true;
		// }
		// return false;
		return list.isEmpty();
	}

	public static void main(String[] args) {
		Queue queue = new Queue();
		queue.put("one");
		queue.put("two");
		queue.put("three");

		System.out.println(queue.get());
		System.out.println(queue.get());
		System.out.println(queue.get());

		System.out.println(queue.isEmpty());
	}
}



关于栈和队列相关数据结构方面的知识见圣思源笔记Lesson 5里面的collection.pdf文档。
分享到:
评论

相关推荐

    JAVA利用LinkedList构造栈与队列

    在本篇内容中,我们将探讨如何通过LinkedList实现栈和队列,以及它们在实际编程中的应用。 首先,栈是一种后进先出(LIFO,Last In First Out)的数据结构,常用于表达式求值、函数调用、回溯算法等场景。在...

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

    在Java编程语言中,LinkedList集合类是一个非常重要的数据结构,它可以用来实现栈和队列这两种特殊的数据结构。LinkedList是一个双链表,每个节点包含数据元素和两个引用,分别指向前后节点,这使得在列表中进行插入...

    栈和队列源代码

    在Java中,可以使用ArrayList或者LinkedList来实现栈。当一个元素被压入栈(push)时,它成为栈顶元素;当一个元素被弹出(pop)时,总是栈顶元素被移除。栈的主要操作还包括查看栈顶元素但不移除(peek)以及检查栈...

    用LinkedList实现队列和栈

    使用`LinkedList`实现栈,主要操作有: - **压栈(Push)**:等同于在链表的头部添加元素,通过`addFirst()`方法实现。 - **弹栈(Pop)**:等同于移除链表的头部元素,通过`removeFirst()`方法实现。 ```java ...

    栈和队列基本操作及练习

    在编程中,许多语言提供了内置的栈和队列数据结构,如Python的`collections.deque`可以作为双端队列,支持栈和队列操作,Java的`java.util.Stack`和`java.util.LinkedList`分别实现了栈和队列。此外,还可以自定义...

    java 栈和队列的小例子

    以下是一个使用LinkedList实现的队列示例: ```java import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue&lt;Integer&gt; queue = ...

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

    在C语言中,我们可以利用单链表来实现栈。栈的主要操作有压栈(push)、弹栈(pop)和查看栈顶元素(top)。这里是一个简单的栈实现: ```c #include "linkedlist.h" Stack createStack() { Stack stack = (Stack...

    java零基础自学之栈和队列

    在Java中,可以使用`java.util.Stack`类来实现栈。这个类继承自`Vector`,提供了栈操作的方法,如`push()`, `pop()`, `peek()`等。 3.2 队列 3.2.1 队列的定义 队列是一种两端操作的数据结构,一端称为队头,用于...

    java技术从入门到精通(孙鑫)学习笔记Lesson 6(数据结构).doc

    在提供的示例中,展示了如何利用LinkedList实现栈和队列的功能: 1. 实现栈(Stack):栈是一种后进先出(LIFO)的数据结构,通过调用`addFirst()`方法实现入栈(push)操作,`removeFirst()`方法实现出栈(pop)...

    分别用栈和队列实现迷宫

    在IT领域,数据结构是解决问题的关键工具之一,而栈和队列是两种基本的数据结构。本主题探讨如何利用栈和队列解决“走迷宫”的问题。在这个问题中,我们通常将迷宫视为一个二维网格,其中每个节点代表一个位置,路径...

    使用LinkedList模拟堆栈

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

    14.栈和队列.pdf

    在Java中,Deque接口提供了实现双端队列的类,比如ArrayDeque(基于数组的双端队列)和LinkedList(基于链表的双端队列)。 循环队列是一种使用数组实现的队列结构,它解决了在普通队列中插入和删除操作需要移动...

    Java模拟栈和队列数据结构的基本示例讲解共4页.pdf

    本篇文档《Java模拟栈和队列数据结构的基本示例讲解共4页.pdf》将深入浅出地介绍如何在Java中实现栈和队列,以帮助开发者更好地理解和应用这些概念。 首先,让我们来了解栈和队列的基本特性: 1. **栈(Stack)**...

    《Java数据结构与算法》中的源代码和applet

    例如,可以学习如何使用ArrayList和LinkedList实现栈和队列,比较它们的性能差异;可以观察不同排序算法(如冒泡排序、快速排序、归并排序)的执行过程,理解它们的时间复杂度;还可以探索树结构(如二叉搜索树、AVL...

    剑指offer--java版1--10源码及解析总结.zip

    Java中,我们可以利用ArrayList或LinkedList实现栈和队列。"用两个栈实现队列"的问题,展示了如何通过栈的特性来模拟队列的操作。 3. **递归与回溯**:递归是解决复杂问题的一种常见方法,而回溯则是求解问题的一种...

    数据结构实验报告二(栈、队列与杨辉三角).docx

    **实现方式**:可以通过数组或者链表来实现栈。本实验报告中采用了数组实现方式。 **主要功能**: - `empty()`:判断栈是否为空。 - `peek()`:返回栈顶元素但不删除。 - `push(T value)`:向栈中添加一个元素。 - ...

    数据结构--表、栈、队列(java)

    - **链表实现**:使用单链表或双链表实现栈,其中链表的头部作为栈顶。 - **数组实现**:使用动态数组实现栈,数组的一端作为栈顶。 **时间复杂度**:无论是链表还是数组实现,栈的Push、Pop、Peek和IsEmpty操作的...

    第03章 栈和队列.zip

    在Java中,我们可以使用java.util.Stack类来实现栈操作,它提供了push、pop、peek(查看栈顶元素但不移除)等方法。对于队列,我们可以使用java.util.Queue接口,其常用的实现类有LinkedList(链表实现的队列)和...

    Ch栈和队列实用PPT课件.pptx

    **在Java中,可以使用ArrayList或LinkedList等集合类来实现栈和队列的功能,也可以使用java.util.Stack和java.util.Queue接口及其实现类如ArrayDeque等。** 栈和队列广泛应用于各种算法和程序设计中,例如括号匹配...

    Ch栈和队列实用PPT学习教案.pptx

    在Java等编程语言中,可以使用内置的数据结构如`java.util.Stack`来方便地实现栈的操作,而队列可以使用`java.util.Queue`接口及其具体实现如`LinkedList`或`ArrayDeque`。 了解和熟练掌握栈和队列的特性及其实现...

Global site tag (gtag.js) - Google Analytics