码迷,mamicode.com
首页 > 其他好文 > 详细

使用LinkedList实现Stack(栈)与Queue(队列)

时间:2014-09-13 17:13:05      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   java   ar   div   sp   

首先引用JDK API中关于LinkedList的一句说明:"These operations allow linked lists to be used as a stack, queue, or double-ended queue."由此,可以得知,使用LinkedList可以轻松的实现栈和队列的功能。通过查看LinkedList源码实现,发现其底层采用双向链表实现。

一:使用LinkedList实现Stack

public class TestStack
{
 public static void main(String[] args)
 {
  MyStack ms = new MyStack();
  
  ms.push("aaa");
  ms.push("bbb");
  ms.push(new Integer(3));
  
  System.out.println(ms.peek());
  System.out.println(ms.pop());
  System.out.println(ms.isEmpty());
  System.out.println(ms.pop());
  System.out.println(ms.pop());
  System.out.println(ms.isEmpty());
 } 
}
 
   

public class TestStack
{
 public static void main(String[] args)
 {
  MyStack ms = new MyStack();
  
  ms.push("aaa");
  ms.push("bbb");
  ms.push(new Integer(3));
  
  System.out.println(ms.peek());
  System.out.println(ms.pop());
  System.out.println(ms.isEmpty());
  System.out.println(ms.pop());
  System.out.println(ms.pop());
  System.out.println(ms.isEmpty());
 } 
}

import java.util.LinkedList;

public class TestStack
{
    public static void main(String[] args)
    {
        MyStack ms = new MyStack();
        
        ms.push("aaa");
        ms.push("bbb");
        ms.push(new Integer(3));
        
        System.out.println(ms.peek());
        System.out.println(ms.pop());
        System.out.println(ms.isEmpty());
        System.out.println(ms.pop());
        System.out.println(ms.pop());
        System.out.println(ms.isEmpty());
    }    
}

class MyStack
{
    //无论栈还是队列,里面都会维护一个成员变量,该成员变量用于存储栈或队列的元素,该成员变量使用LinkedList类型。
    private LinkedList list = new LinkedList();
    
    public void push(Object o)
    {
        list.add(o);
    }
    
    public Object pop()
    {
        return list.removeLast();
    }
    
    public Object peek()//查看栈顶元素
    {
        return list.getLast();
    }
    
    public boolean isEmpty()
    {
        return list.isEmpty();
    }
}

在Eclipse中的输出结果是:
--------------------------------------------------------------------------------

3
3
false
bbb
aaa
true

--------------------------------------------------------------------------------

二:使用LinkedList实现Queue

import java.util.LinkedList;

public class TestQueue
{
    public static void main(String[] args)
    {
        MyQueue mq = new MyQueue();
        
        mq.put("aaa");
        mq.put("bbb");
        mq.put(new Integer(3));
        
        System.out.println(mq.get());
        System.out.println(mq.isEmpty());
        System.out.println(mq.get());
        System.out.println(mq.get());
        System.out.println(mq.isEmpty());
        
    }
}

class MyQueue
{
    //无论栈还是队列,里面都会维护一个成员变量,该成员变量用于存储栈或队列的元素,该成员变量使用LinkedList类型。
    private LinkedList list = new LinkedList();
    
    public void put(Object o)
    {
        list.add(o);//this method is equivalent list.addFirst(o);
    }
    
    public Object get()
    {
        return list.remove();//or return list.removeFirst();
    }
    
    public boolean isEmpty()
    {
        return list.isEmpty();
    }
}

在Eclipse中的输出结果是:
-------------------------------------------------------------------------------

aaa
false
bbb
3
true

-------------------------------------------------------------------------------

使用LinkedList实现Stack(栈)与Queue(队列)

标签:style   blog   color   io   使用   java   ar   div   sp   

原文地址:http://www.cnblogs.com/xpjiang/p/3970002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!