Java使用LinkedList模拟一个堆栈或者队列数据结构

用Java模拟一个堆栈或者队列数据结构。

首先得明白堆栈和队列的数据结构:

堆栈:先进后出

队列:先进先出

LinkedList中刚好有addFirst()和addLast()方法。

[java] view
plain
copyprint?

  1. public class Stack
    {
  2. public static void main(String[] args) {
  3. StackTools tools = new StackTools();
  4. tools.add("a");
  5. tools.add("b");
  6. tools.add("c");
  7. tools.add("d");
  8. tools.remove();
  9. }
  10. }
  11. private
    class  StackTools {
  12. private LinkedList<String> linkedList;
  13. public StackTools(){
  14. linkedList = new LinkedList<String>();
  15. }
  16. public void add(String string){
  17. linkedList.addFirst(string);
  18. }
  19. public void remove(){
  20. for(int i
    = 0; i < linkedList.size(); i++){
  21. String content = linkedList.get(i);
  22. System.out.println(content);
  23. }
  24. }
  25. }

打印结果:

[java] view
plain
copyprint?

  1. d
  2. c
  3. b
  4. a

这是先进后出,这就是堆栈的数据结构,队列就简单了,只要把addFirst()方法改成addLast()方法就行。

代码如下:

[java] view
plain
copyprint?

  1. public class Queue
    {
  2. public static void main(String[] args) {
  3. QueueTools tools = new QueueTools();
  4. tools.add("a");
  5. tools.add("b");
  6. tools.add("c");
  7. tools.add("d");
  8. tools.remove();
  9. }
  10. }
  11. private
    class QueueTools {
  12. private LinkedList<String>
    linkedList;
  13. public QueueTools(){
  14. linkedList = new LinkedList<String>();
  15. }
  16. public void add(String string){
  17. linkedList.addLast(string);
  18. }
  19. public void remove(){
  20. for(int i
    = 0; i < linkedList.size(); i++){
  21. String content = linkedList.get(i);
  22. System.out.println(content);
  23. }
  24. }
  25. }
时间: 2024-10-12 11:12:05

Java使用LinkedList模拟一个堆栈或者队列数据结构的相关文章

Java LinkedList特有方法程序小解 &amp;&amp; 使用LinkedList 模拟一个堆栈或者队列数据结构。

package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst()/getLast(); removeFirst()/removeLast(); 若链表为空,抛出 没有这个元素异常/NoSuchElementException 但是 JDK1.6 版本以后出现了替代方法: offerFirst()/offerLast(); peekFirst()/peekLas

使用LinkedList模拟一个堆栈或者队列数据结构

使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public class DuiLie { private LinkedList link; public DuiLie() { link = new LinkedList(); } public void myAdd(Object obj) { link.addFirst(obj); } public Object

java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。

/* 使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 First in First out FIFO 如同一个水管. */ import java.util.*; class DuiLie { private LinkedList link; DuiLie() { link = new LinkedList(); } public void myAdd(Object obj) { link.addFirst(obj); } public O

用LinkedList模拟一个堆栈或者队列数据结构 总结: LinkedList知识点

/** 用LinkedList模拟一个堆栈或者队列数据结构. 创建一个堆栈和队列数据结构对象,该对象中使用LinkedList来完成的. 知识点总结: 1.LinkedList特点:链表式数据结构. 重复有序,查询速度慢,增删速度快.不同步的. 2.LinkedList除了实现List接口增删改查的功能外,有一些特有的方法,能够实现在List(列表)的开头和结尾 插入,删除,获取等特有功能.这就是为什么LinkedList能够模拟一个堆栈,或者队列,双端队列的数据结构了. 涉及知识点: 1.什么

【Java学习笔记】&lt;集合框架&gt;使用LinkedList来模拟一个堆栈或者队列的数据结构

1 import java.util.LinkedList; 2 3 public class Test5 { 4 5 public static void main(String[] args) { 6 7 Duilie dl = new Duilie(); 8 9 dl.myAdd("abc1"); 10 dl.myAdd("abc2"); 11 dl.myAdd("abc3"); 12 dl.myAdd("abc4");

java通过LinkedList实现堆栈和队列数据结构

1 package com.shb.java; 2 3 import java.util.LinkedList; 4 5 public class TestLinkedList { 6 7 /** 8 * @author shaobn 9 * @Describe :利用LinkedList实现队列和堆栈 10 * @param args 11 * @Time : 2015-8-27 下午10:28:33 12 */ 13 public static void main(String[] args

使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法

一,LRU算法介绍 LRU算法是最近最少未使用算法.当内存缺页时,总是优先选出距离当前最久未使用的页面换出,并把当前的缺页换入.该算法可用栈模拟实现. 栈顶总是保存当前最近访问的页面号,栈底则总是保存最久未访问的页面号.对于下一个页面,有两种情况: ①命中,则需要:更新栈顶元素.即将当前命中的页面号放到栈顶. ②未命中,这里还需要考虑栈是否满了.1)若栈未满,直接将未命中的页面号放到栈顶即可.2)栈已经满了,则需要选中一页换出(栈底元素是最久未访问的页面),然后再将新页面放入栈顶. 二,代码实现

两个队列模拟一个栈

#include <iostream> #include <assert.h> #include <queue> using namespace std; /*两个队列模拟一个堆栈*/ /*队列A.B 入栈:将元素依次压入到非空的队列,第一个元素压倒对列A 出栈:把队列A的前n-1个元素倒到队列B,把第n个元素去掉.此时数据在B中,下次操作,则对B操作. 栈顶:把队列A的前n-1个元素倒到队列B,把第n个元素作为栈顶*/ template <typename T&

scala模拟一个timer

直接上代码: package com.test.scalaw.test.demo import java.util.Date /** * 模拟一个定时timer */ object Timer { def periodicCall(s : Integer,callback:()=>Unit):Unit={ while(true){ callback() Thread.sleep(s*1000) } } def main(args: Array[String]): Unit = { //采用匿名函