黑马程序员技术交流社区

标题: (主推) 用集合模拟堆(先进先出)和栈(后进先出) [打印本页]

作者: 朱晓杰    时间: 2013-5-12 13:30
标题: (主推) 用集合模拟堆(先进先出)和栈(后进先出)
本帖最后由 朱晓杰 于 2013-5-12 14:52 编辑

用集合模拟堆(先进先出)和栈(后进先出)

1、堆和栈概述
   堆是堆,栈是栈.
   栈是先进后出,就像叠盘子,后面叠上去的就要先拿出来,第一个要最后拿出来;而堆是顺序随意的.自己对数据结构还不怎么了解,请各位黑马多多发表自己的见解,我最近也在看数据结构的视频,给大家推荐一下:
http://wenku.baidu.com/course/view/4fde50e2524de518964b7d01?fr=view
               
  1. import java.util.LinkedList;

  2. /*
  3. * 栈:后进先出,底层用LinkedList实现
  4. * 参照java.util.Stack;
  5. * */
  6. class MyStack {
  7.         private LinkedList list;
  8.         MyStack(){
  9.                 list = new LinkedList();
  10.         }
  11.        
  12.         public boolean isNull(){//测试栈是否为空
  13.                 return list.isEmpty();
  14.         }
  15.        
  16.         public Object peek(){//查看栈顶对象而不移除它
  17.                 return list.peek();
  18.         }
  19.        
  20.         public Object pop(){//移除栈顶对象并作为此函数的返回值
  21.                 return list.pollFirst();
  22.                 //return list.pollLast();
  23.         }
  24.        
  25.         public void push(Object obj){//把项压入栈顶
  26.                 list.addFirst(obj);
  27.         }
  28. }

  29. public class MyStackTest{
  30.         public static void main(String[] args) {
  31.                 MyStack ms = new MyStack();
  32.                 ms.push("java01");
  33.                 ms.push("java02");
  34.                 ms.push("java03");
  35.                 ms.push("java04");
  36.                 /*后进先出*/
  37.                 while(!ms.isNull()){
  38.                         System.out.println(ms.pop());
  39.                 }
  40.         }
  41. }
复制代码
  1. /*
  2. 使用LinkedList模拟堆栈和队列
  3. 堆栈:先进后出(杯子) FILO
  4. 队列:先进先出(水管) FIFO
  5. */
  6. import java.util.*;
  7. import static java.lang.System.*;
  8. class LinkedListDemo
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 DuiLie dl = new DuiLie();
  13.                 dl.myAdd("java01");
  14.                 dl.myAdd("java02");
  15.                 dl.myAdd("java03");
  16.                 dl.myAdd("java04");
  17.                
  18.                 /*out.println("后进先出:");
  19.                 while(!dl.isNull()){
  20.                         out.println(dl.myGetFILO());
  21.                 }*/

  22.                 out.println("先进先出:");
  23.                 while(!dl.isNull()){
  24.                         out.println(dl.myGetFIFO());
  25.                 }
  26.         }
  27. }

  28. class DuiLie
  29. {
  30.         private LinkedList list;
  31.         
  32.         public DuiLie(){
  33.                 list = new LinkedList();
  34.         }

  35.         public void myAdd(Object obj){
  36.                 list.offerFirst(obj);
  37.         }

  38.         public Object myGetFIFO(){//先进先出
  39.                 return list.removeLast();
  40.         }

  41.         public Object myGetFILO(){//先进后出
  42.                 return list.removeFirst();
  43.         }

  44.         public boolean isNull(){
  45.                 return list.isEmpty();
  46.         }
  47. }
复制代码

作者: 曹睿翔    时间: 2013-5-12 22:02
满25分,可能再有收集,你就不会出现了

作者: 朱晓杰    时间: 2013-5-12 22:52
曹睿翔 发表于 2013-5-12 22:02
满25分,可能再有收集,你就不会出现了

版主,可能会是这样,因为我的学习进度会比你的总结慢,但是我会一直关注,我也会和版主一样经常总结,经常发帖的,因为我发现总结的过程实在太爽了,我可以在你总结帖之后继续发我自己的总结帖么?
作者: 曹睿翔    时间: 2013-5-12 23:05
朱晓杰 发表于 2013-5-12 22:52
版主,可能会是这样,因为我的学习进度会比你的总结慢,但是我会一直关注,我也会和版主一样经常总结,经 ...

绝对没问题,我会留位置给你,继续收录
作者: 朱晓杰    时间: 2013-5-12 23:07
曹睿翔 发表于 2013-5-12 23:05
绝对没问题,我会留位置给你,继续收录

:handshake 谢版主!我会再接再励!明天将会把properties类给加上!版主,要关注的,到时候提点儿意见!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2