黑马程序员技术交流社区

标题: 求助!!!哪位帮我解析一下,实在看不懂 [打印本页]

作者: mysouffle    时间: 2014-8-17 21:39
标题: 求助!!!哪位帮我解析一下,实在看不懂
请用LinkedList模拟栈数据结构的集合,并使用。

package cn.itcast_03;
import java.util.LinkedList;
/*
* 自定义栈使用
* add
* get
*/
public class MyStack {
       private LinkedList link;
         public MyStack() {
               link = new LinkedList();
          }
         public void add(Object obj) {
          link.addFirst(obj);
        }
      public Object get() {
        return link.removeFirst();
        }
       public boolean isEmpty() {
            return link.isEmpty();
      }
}
public class MyStackDemo {
     public static void main(String[] args) {
     // 创建集合对象
       MyStack my = new MyStack();
      // 添加元素
         my.add("hello");
         my.add("world");
         my.add("java");
        // 获取元素
       // System.out.println(my.get());
  
         while (!my.isEmpty()) {
            System.out.println(my.get());
         }
     }
}


作者: hejinzhong    时间: 2014-8-17 22:01
这个就是首先了解 栈(这种数据结构)的特点,然后知道 linkList中 addFirst/addLast 以及removeFirst/removeLast这几个特有方法的使用。
作者: ssy1939    时间: 2014-8-17 22:06
堆栈结构是先进后出,你那两个都用添加和移除都是  frist  是先进先出的说
作者: ximi    时间: 2014-8-17 22:26
你可以想象是在摘水果,你摘的第一水果是在篮子最下面吧,你买摘一个就会一个一个压着,这就是压栈,你拿出你的苹果,是不是先从最上面的拿,就是出栈。先进后出
作者: masai158    时间: 2014-8-17 23:07
  1. //ArratList 模拟堆栈 和 列队
  2. public class Test020 {

  3.         public static void main(String[] args)
  4.         {
  5.                 List<Integer> list = new ArrayList<Integer>();
  6.                 list.add(21);
  7.                 list.add(32);
  8.                 list.add(54);
  9.                
  10.                 print1(list);
  11.                 System.out.println("-----------");
  12.                 print2(list);
  13.                
  14.         }
  15.        
  16.         public static void print1(List<Integer> list)        //堆栈,先进后出
  17.         {
  18.                 for(int i=list.size()-1; i>=0; i--)
  19.                 {
  20.                         System.out.println(list.get(i));
  21.                 }
  22.         }
  23.        
  24.         public static void print2(List<Integer> list)        //队列,先进先出
  25.         {
  26.                 for(int i=0; i<list.size(); i++ )
  27.                 {
  28.                         System.out.println(list.get(i));
  29.                 }
  30.         }

  31. }

  32. 我还是发一下。虽然不能帮助你
复制代码

作者: mysouffle    时间: 2014-8-17 23:32
谢谢大家,有待慢慢理解……
作者: 毕业生    时间: 2014-8-18 00:12
本帖最后由 毕业生 于 2014-8-18 00:18 编辑
mysouffle 发表于 2014-8-17 23:32
谢谢大家,有待慢慢理解……


public class Stack {
//声明一个LinkedList引用
        private LinkedList list;                                               
        public Stack() {
  //当调用构造方法的时候,创建LinkedList对象
             list = new LinkedList();                                 
     }
          //模拟进栈的方法
public void in(Object obj) {   
           //向集合中添加元素               
             list.addLast(obj);                                             
        }
              //模拟出栈的方法
            public Object out() {     
             //从集合删除元素                              
              return list.removeLast();                                
        }
           //模拟集合中是否有元素的方法   
        public boolean isEmpty() {
                 //判断集合是否为空                                    
                return list.isEmpty();                                       
        }
}

妹姊好萌,43期Android,有事不懂联系哈
作者: 恣意的豆腐    时间: 2014-8-18 07:57
要先搞清栈神马,他的原理类似于弹夹,最后压进去的先弹出来
作者: mysouffle    时间: 2014-8-18 09:16
恣意的豆腐 发表于 2014-8-18 07:57
要先搞清栈神马,他的原理类似于弹夹,最后压进去的先弹出来

原理明白,就是进栈压栈,获取的时候先进后出,但是就是不知道代码怎么写出来的,需要代码的解析
作者: mysouffle    时间: 2014-8-18 09:20
还是不能理解,有没有哪位能清楚的解析一下,我发上去的代码的




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