A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请用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());
         }
     }
}

9 个回复

倒序浏览
这个就是首先了解 栈(这种数据结构)的特点,然后知道 linkList中 addFirst/addLast 以及removeFirst/removeLast这几个特有方法的使用。
回复 使用道具 举报
堆栈结构是先进后出,你那两个都用添加和移除都是  frist  是先进先出的说
回复 使用道具 举报
你可以想象是在摘水果,你摘的第一水果是在篮子最下面吧,你买摘一个就会一个一个压着,这就是压栈,你拿出你的苹果,是不是先从最上面的拿,就是出栈。先进后出
回复 使用道具 举报
  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. 我还是发一下。虽然不能帮助你
复制代码
回复 使用道具 举报
谢谢大家,有待慢慢理解……
回复 使用道具 举报
本帖最后由 毕业生 于 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
要先搞清栈神马,他的原理类似于弹夹,最后压进去的先弹出来

原理明白,就是进栈压栈,获取的时候先进后出,但是就是不知道代码怎么写出来的,需要代码的解析
回复 使用道具 举报
还是不能理解,有没有哪位能清楚的解析一下,我发上去的代码的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马