android栈和队列

栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。LinkedList数据结构是一种双向的链式结构,每一个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素,和数组的顺序存储结构(如:ArrayList)相比,插入和删除比较方便,但速度会慢一些。 栈的定义栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。(3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。public class StackDemo {
 LinkedList linkList = new LinkedList<Object>();
 public void push(Object object) {
  linkList.addFirst(object);
 }
 public boolean isEmpty() {
  return linkList.isEmpty();
 }
 public void clear() {
  linkList.clear();
 }
 // 移除并返回此列表的第一个元素
 public Object pop() {
  if (!linkList.isEmpty())
   return linkList.removeFirst();
  return "栈内无元素";
 }
 public int getSize() {
  return linkList.size();
 }
 public static void main(String[] args) {
  StackDemo myStack = new StackDemo();
  myStack.push(2);
  myStack.push(3);
  myStack.push(4);
  System.out.println(myStack.pop());
  System.out.println(myStack.pop());
  System.out.println(myStack.pop());
 }

}

/队列定义
//队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表
//(1)允许删除的一端称为队头(Front)。
//(2)允许插入的一端称为队尾(Rear)。
//(3)当队列中没有元素时称为空队列。
//(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。

public class MyQueue {
LinkedList<Object> linkedList = new LinkedList<Object>();
//队尾插
 public void put(Object o) {
  linkedList.addLast(o);
 }
 // 队头取 取完并删除
 public Object get() {
  if (!linkedList.isEmpty())
   return linkedList.removeFirst();
  else
   return "";
 }
 public boolean isEmpty() {
  return linkedList.isEmpty();
 }
 public int size() {
  return linkedList.size();
 }
 public void clear() {
  linkedList.clear();
 }
 public static void main(String[] args) {
  MyQueue myQueue = new MyQueue();
  myQueue.put(1);
  myQueue.put(2);
  myQueue.put(3);
  System.out.println(myQueue.get());
  System.out.println(myQueue.get());
  System.out.println(myQueue.get());
 }
}

摘自http://hi.baidu.com/penguu8/item/d4010511aaeddbff9813d6d7

android栈和队列的更多相关文章

  1. Java中ArrayDeque,栈与队列

    package ch8; import java.util.*; /** * Created by Jiqing on 2016/11/27. */ public class ArrayDequeSt ...

  2. 学习javascript数据结构(一)——栈和队列

    前言 只要你不计较得失,人生还有什么不能想法子克服的. 原文地址:学习javascript数据结构(一)--栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程语言都原生支持数组类型,因 ...

  3. [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)

    再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...

  4. 剑指Offer面试题:6.用两个栈实现队列

    一.题目:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 原文是使用 ...

  5. C实现栈和队列

    这两天再学习了数据结构的栈和队列,思想很简单,可能是学习PHP那会没有直接使用栈和队列,写的太少,所以用具体代码实现的时候出现了各种错误,感觉还是C语言功底不行.栈和队列不论在面试中还是笔试中都很重要 ...

  6. JavaScript数组模拟栈和队列

    *栈和队列:js中没有真正的栈和队列的类型              一切都是用数组对象模拟的 栈:只能从一端进出的数组,另一端封闭       FILO   何时使用:今后只要仅希望数组只能从一端进 ...

  7. 用JS描述的数据结构及算法表示——栈和队列(基础版)

    前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...

  8. JavaScript中的算法之美——栈、队列、表

    序 最近花了比较多的时间来学习前端的知识,在这个期间也看到了很多的优秀的文章,其中Aaron可能在这个算法方面算是我的启蒙,在此衷心感谢Aaron的付出和奉献,同时自己也会坚定的走前人这种无私奉献的分 ...

  9. Java数据结构和算法之栈与队列

    二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为 ...

随机推荐

  1. java父类调用被子类重写的方法

    [转][原文]  1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解jav ...

  2. javascript页面打印

    打印本身比较简单,但要考虑到具体的需求.比如 1. 多浏览器: if (isIE()) { //打印预览 WebBrowser1.execWB(7, 1); } else { window.print ...

  3. Spring -- spring 中使用jdbc, c3p0连接池, dao概念

    1. 示例代码 CustomerDao.java  ,dao接口 public interface CustomerDao { public void insertCustomer(Customer ...

  4. codevs 1017 乘积最大 dp

    1017 乘积最大 时间限制: 1 s 空间限制: 128000 KB         题目描述 Description 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚 ...

  5. (CSharp)克隆控件事件

    // https://stackoverflow.com/questions/6055038/how-to-clone-control-event-handlers-at-run-time // &q ...

  6. 使用MouseWithoutBordersSetup共享鼠标键盘教程

    1.下载MouseWithoutBordersSetup软件 2.需要共享鼠标键盘的电脑都要安装[注:这些电脑在同一个局域网] 3.运行软件后,图标上右键—>Settings 注意大红框的地方, ...

  7. 006——VUE中的内容与属性中使用javascript表达式的方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Android应用实现Push推送消息原理

            本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我 们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅 ...

  9. String、StringBuffer、StringBuilder分析(jdk8)

    以下代码只挑选了关键方法进行分析 public final class String //String类不可继承,实现了序列化 implements java.io.Serializable, Com ...

  10. 【数据库】python访问mysql

    import MySQLdb 所有的数据库遵循相同的python database API 需要建立connection对象连接数据库,之后建立cursor对象处理数据. conn = MySQLdb ...