实现一个栈操作,将1~12月的英文单词压入栈中,然后再取出
来源:互联网 发布:域名交易网站源码 编辑:程序博客网 时间:2024/05/01 05:06
栈(stack)可以是一个“后进先出”的数据结构,先进入的元素在栈底,最后一个元素在栈顶,换言之,在栈里最后一个压入的元素将会是第一个取出来的。这里和其他java一样,入栈和出栈的元素都是Object类型。
这里我实现的栈的初始容量为10,当容量不够时自动扩容,每次扩容为原来的一倍。
pop()方法,可以返回栈顶元素的引用。
实现代码如下:
/*程序来源:德国著名ERP软件公司S2005年10月面试题 * 源文件名称:Stack.java *要 点: *实现一个栈操作,将1~12月的英文单词压入栈中, *然后再将其取出,使用java代码实现。 */public class Stack{private int CAPACITY = 10;private int stackp = 0;//栈顶指针Object[] objs;public Stack(){objs = new Object[CAPACITY];}public Stack(int capacity){CAPACITY = capacity;objs = new Object[CAPACITY];}public void push(Object obj){if(stackp < CAPACITY){objs[stackp] = obj;stackp++;}else{//如果栈满了自动扩容,每次扩大一倍int temp_capacity = CAPACITY*2;Object[] temp_objs = new Object[temp_capacity];for(int i = 0;i<CAPACITY;i++){temp_objs[i] = objs[i];}CAPACITY = temp_capacity;objs = temp_objs;objs[stackp] = obj;stackp++;}}public Object pop(){Object obj = null;if(stackp>0){stackp--;obj = objs[stackp];objs[stackp] = null;}return obj;}public Object top(){if(!isEmpty)return objs[stackp-1];else{return null;}}public int size(){return stackp;}public boolean isEmpty(){return stackp==0?true:false;}public static void main(String[] args){Stack s = new Stack();String[] months = {"January","February","March","April","May","June","July","August","September","October","November","December"};for(int i =0;i<months.length;i++){s.push(months[i]);}System.out.println(s.size()+" "+s.isEmpty());for(int i =0;i<months.length;i++){System.out.println( s.pop());}System.out.println(s.size()+" "+s.isEmpty());//测试栈自动扩容for(int i = 0;i<10;i++){s.push(i+"");}System.out.println(s.size()+" "+s.isEmpty());for(int i = 10;i<20;i++){s.push(i+"");}System.out.println(s.size()+" "+s.isEmpty());}}
结果如图所示:
0 0
- 实现一个栈操作,将1~12月的英文单词压入栈中,然后再取出
- 实现一个栈操作,将完成先进后出的操作。
- 把事件保存到列表,然后再取出。
- 用C语言将一个数开根号后再取倒数的方法
- 用单链表实现一个队列或一个栈的出入队和出入栈操作
- 实现一个出栈,入栈,返回最小值的操作的时间复杂度为O(1)的栈
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列
- 【栈队列】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 栈--实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- ~实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)~
- 剑指offer 21---实现一个栈, 要求实现Push( 出栈) 、 Pop( 入栈) 、 Min( 返回最小值的操作) 的时间复杂度为O(1)
- 1. 实现一个栈,要求实现 Push (出栈)、 Pop (入栈)、 Min (返回最小值的操作) 的时间复杂度为 O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- Singleton(单例模式)
- 使用VS2010 C#开发ActiveX控件(上)
- struts2 标签截取字符串 struts2-在jsp页面中控制只显示前n个字符
- C/C++中的预定义宏
- 这些话,要常记心中
- 实现一个栈操作,将1~12月的英文单词压入栈中,然后再取出
- hdu 1210 追踪法求解洗牌问题
- C++程序优化--第一章 简
- Nyoj 70 阶乘因式分解(二)
- 【设计模式】装饰模式
- uva 11988 这题可以看出c++中string效率的底下
- No_32:Pandigital products
- 使用VS2010 C#开发ActiveX控件(下),完整代码打包下载
- 块级元素与行内元素(内联元素)