注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

众里寻他千百度,名师成就满分路

AP 微积分 AP 计算机 腾飞的博客

 
 
 

日志

 
 
关于我

大学讲师,中国首批AP计算机教师,著有中国第一套,历经五年实践证明深受学生欢迎的成功的AP计算机双语教材,2013年以93%的满分率开创了中国AP计算机成功的先河,远远超出全美26.6%的满分率,为中国AP计算机教学树立了典范,并在同年加拿大计算机竞赛中勇夺桂冠,任教学生获哥伦比亚大学,麻省理工学院,卡耐基梅隆大学,宾夕法尼亚大学,康奈尔大学,西北大学等学校录取,远程学生遍及北京、长春、南京、重庆、广州、济南, 深圳、成都、费城,洛杉矶,加州,宾州,新罕布什尔州等地,希望借此平台为信息技术的发展做出贡献!

网易考拉推荐

AP COMPUTER AB栈与自定义栈  

2012-12-28 09:21:37|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Java自带栈示例

public class StackExample
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Stack<Integer>[]  stack=new Stack[3];
        stack[0]=new Stack<Integer>();
        stack[0].push(new Integer(1));//实现压栈操作
        stack[0].push(new Integer(2));
        stack[0].push(new Integer(3));
        stack[0].push(new Integer(4));
        Integer a=stack[0].pop();//实现弹栈操作,取出数据元素
       
        System.out.println(a.intValue());
        Integer b=stack[0].peek();//获取栈顶的元素,但不删除
        System.out.println(b.intValue());
       
        Stack s=new Stack();
        
   }
 }

//自定义栈

这里是使用Object数组来实现栈的存取,由于栈的FILO的特性,其用链表更加节省空间; 首先定义一个栈接口,用来描述栈的功能,提供出栈、入栈、获取栈顶元素、判断是否为空以及清空栈;

package my.stack;    public interface IStack<T> {   //元素出栈,并返回出栈元素   public T pop();      //元素入栈   public void push(T element);      //获取栈顶元素   public T peek();      //判断栈是否为空   public boolean isEmpty();      public void clear();  }  


然后,根据栈接口的描述来实现该栈,这里用Object数组的方式来实现;


        
package my.stack;    import java.util.Arrays;    public class ArrayStack<T> implements IStack<T> {   private final int DEFAULT_SIZE = 3;   private int size = 0;   private int capacity = 0;      //top指向下一个能够添加元素的位置   private int top = 0;   private Object[] array;      public ArrayStack(){    this.capacity = this.DEFAULT_SIZE;    this.array = new Object[this.capacity];    this.size = 0;   }      public ArrayStack(int capacity){    this.capacity = capacity;    this.array = new Object[this.capacity];    this.size = 0;   }      @Override   public boolean isEmpty() {    // TODO Auto-generated method stub    return size == 0;   }     @Override   public T peek() {    // TODO Auto-generated method stub    return (T)this.array[this.top-1];   }     @Override   public T pop() {    // TODO Auto-generated method stub    T element = (T)this.array[top - 1];    this.array[top-1] = null;    this.size--;    return element;   }     @Override   public void push(T element) {    // TODO Auto-generated method stub    if(this.size < this.capacity){     this.array[top] = element;     this.top++;     this.size ++;    }else{  //   System.out.println("out of array");     enlarge();     push(element);    }   }      public void enlarge(){    this.capacity = this.capacity + this.DEFAULT_SIZE;    Object[] newArray = new Object[this.capacity];    System.arraycopy(array, 0, newArray, 0, array.length);    Arrays.fill(array, null);    this.array = newArray;   }      public int size(){    return this.size;   }     @Override   public void clear() {    // TODO Auto-generated method stub    Arrays.fill(array, null);    this.top = 0;    this.size = 0;    this.capacity = this.DEFAULT_SIZE;    this.array = new Object[this.capacity];   }  }  


最后编写一个测试客户端,用来测试该栈能够正常工作;


package my.stack;    public class MyArrayStackClient {   public static void main(String[] args) {    ArrayStack<Integer> stack = new ArrayStack<Integer>();    stack.push(1);    stack.push(2);    stack.push(3);    stack.push(4);    stack.push(5);    System.out.println(stack.isEmpty());    System.out.println(stack.peek());  //  System.out.println(stack.pop());    System.out.println(stack.size());    stack.clear();    System.out.println(stack.size());   }    }  

  评论这张
 
阅读(108)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017