package com.ct.stack;
/**
* @author Chalmers
* @version 创建时间:2015年10月24日 下午10:10:13
*/
public class StackDemo {
// 初始容量
private int capacity = 10;
// 增量
private double increment = 1.5;
// 栈中数据数量
private int length = 0;
// 用来实现栈功能的数组
private Object[] src = new Object[capacity];
//默认大小
public StackDemo() {
}
// 自定义初始栈的大小
public StackDemo(int initCapacity) {
this.capacity = initCapacity;
}
// 判断栈是否为空
public boolean isEmpty() {
return length == 0 ? true : false;
}
//扩充栈的容量
public Object[] extend(){
Object[] dest = new Object[(int)(src.length * increment)];
System.arraycopy(src, 0, dest, 0, src.length);
return dest;
}
//压栈
public void push(Object obj){
if(length >= src.length){
src = extend();
}
src[length] = obj;
length ++;
}
//取栈顶元素
public Object peek(){
if(isEmpty()){
throw new NullPointerException();
}
return src[length-1];
}
//取出栈顶元素并删除
public Object pop(){
if(isEmpty()){
throw new NullPointerException();
}
length --;
return src[length];
}
//获得栈的元素个数
public int size(){
return length;
}
}
测试类
package com.ct.stack;
/**
* @author Chalmers
* @version 创建时间:2015年10月24日 下午10:30:51
*/
public class StackTest {
public static void main(String[] args) {
StackDemo sd = new StackDemo();
for(int i=0; i<20; i++){
sd.push(new Integer(i));
}
while(!sd.isEmpty()){
System.out.print("栈的大小: "+sd.size()+" ");
System.out.println("栈顶元素为: "+sd.pop());
}
//sd.pop();
}
}
输出结果为:
栈的大小: 20 栈顶元素为: 19
栈的大小: 19 栈顶元素为: 18
栈的大小: 18 栈顶元素为: 17
栈的大小: 17 栈顶元素为: 16
栈的大小: 16 栈顶元素为: 15
栈的大小: 15 栈顶元素为: 14
栈的大小: 14 栈顶元素为: 13
栈的大小: 13 栈顶元素为: 12
栈的大小: 12 栈顶元素为: 11
栈的大小: 11 栈顶元素为: 10
栈的大小: 10 栈顶元素为: 9
栈的大小: 9 栈顶元素为: 8
栈的大小: 8 栈顶元素为: 7
栈的大小: 7 栈顶元素为: 6
栈的大小: 6 栈顶元素为: 5
栈的大小: 5 栈顶元素为: 4
栈的大小: 4 栈顶元素为: 3
栈的大小: 3 栈顶元素为: 2
栈的大小: 2 栈顶元素为: 1
栈的大小: 1 栈顶元素为: 0
分享到:
相关推荐
5. **动态扩展**:Java中没有直接的动态扩展数组的操作,但可以通过创建新数组并复制旧数组内容实现类似功能。 五、数组与内存效率 数组在内存中是连续分配的,因此访问速度快。然而,如果数组过大,可能会导致内存...
在这个作业中,学生们被要求设计一个类来实现栈的基本结构,并基于此构建一个小型计算器。栈是一种特殊的线性数据结构,遵循“后进先出”(LIFO)的原则,常用于各种计算和内存管理操作。下面我们将详细探讨这个作业...
通过以上实验,我们不仅学习了数组排序和折半查找算法的基础知识,还掌握了如何使用一维数组实现栈,并利用栈来解决实际问题——将十进制数转换为二进制数。这些技能对于深入理解数据结构和算法非常有帮助,并且能够...
在这个主题中,我们将深入探讨如何在Java中实现栈这一基本数据结构,具体包括顺序栈(stack_SqStack)和链栈(stack_SLinkList)。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于临时存储和快速...
"array-abuse:数组很有趣"可能涵盖了这些主题的创新应用,例如使用数组实现一些创意数据结构、优化算法,或者通过不寻常的方式操作数组以解决特定问题。无论是在面试中展示编程技巧,还是在实际项目中解决问题,理解...
在Java中,除了LinkedList,还可以使用ArrayDeque类来实现栈和队列,ArrayDeque提供了更高效的操作,因为它基于数组而不是链表。 在实际应用中,LinkedList适合于频繁插入和删除的场景,因为这些操作的时间复杂度为...
在这个"java代码-数组 40 李启强"的学习资源中,我们可以深入探讨40个关于Java数组的关键知识点,这些知识点涵盖了数组的基本操作、高级用法以及在实际编程中的应用。 1. **数组定义与初始化**: - 声明数组时,...
- 描述:仅使用栈实现队列的所有功能。 - 关键技术:使用两个栈,一个用于入队操作,另一个用于出队操作。 ### 二叉树 二叉树是非线性的数据结构,广泛应用于算法设计中。 - **BinaryTreePreorderTraversal** -...
Java会为数组分配默认值,例如对于基本类型,int 类型的数组元素默认值为0,boolean 类型的默认值为false,对象类型的默认值为null。 动态初始化格式如下: ```java 数据类型[] 数组名 = new 数据类型[数组长度]; ...
•Java的数组既可以存储基本类型的数据,也可以存储引用类型的数据。 •值得指出的是:数组也是一种数据类型,它本身是一种引用类型。 定义数组 •Java语言支持两种语法格式来定义数组: –type[ ] ...
- **Java**:`int[] arr = new int[10]`创建数组,`ArrayList`提供动态数组功能。 - **Python**:`arr = [1, 2, 3]`创建列表,相当于动态数组。 - **JavaScript**:`let arr = [1, 2, 3]`创建数组,支持多种方法如`...
本项目提供了一个完整的Java实现,可以帮助学习者深入理解Java编程以及游戏开发的基本原理。 首先,Java语言是这个项目的基础。它是一种面向对象的、跨平台的编程语言,以其丰富的类库和强大的性能而闻名。学习Java...
Java的`PriorityQueue`类实现了这一功能,源码会展示其内部基于堆的实现机制。 通过对这些源码的学习,开发者不仅能掌握数据结构的基本概念,还能深入了解Java语言在实现这些数据结构时的优化策略,从而提升编程...
源程序中可能包含了用不同编程语言(如C++、Java、Python等)实现的双端栈示例,这有助于读者深入理解双端栈的内部工作原理和使用方式。通过阅读和分析这些源代码,你可以学习如何创建和维护双端栈的数据结构,以及...
数组、链表、栈、队列、集合(ArrayList, HashSet等)等数据结构在存储游戏对象和状态时起到关键作用。同时,算法如排序、查找、动态规划也可能在游戏中有所应用。 6. **多线程**:为了实现游戏的并发性,比如让...
数组是Java中最基本的数据结构之一,用于存储固定大小的同类型元素集合。 - **获取数组长度**:数组的长度可以通过`数组.length`获取,这个属性提供数组元素的数量。 - **数组复制** - 使用`System.arraycopy()`...
- 数据类型:基本数据类型(如int、double)与引用数据类型(如类、数组)的区别。 - 变量作用域:局部变量、实例变量、静态变量的作用范围及初始化。 - 类与对象:类的概念、对象的创建过程、封装、继承、多态的...
以下是一个简单的基于数组实现的顺序栈的Java代码示例: ```java public class ArrayStack { private String[] items; // 数组 private int count; // 栈中元素个数 private int n; // 栈的大小 // 初始化数组...
Java作为一种广泛使用的编程语言,提供了丰富的工具和技术来实现这些算法。本篇将深入探讨递归、栈以及它们在排序和查找中的应用。 首先,递归是一种解决问题的方法,它通过调用自身来解决更小规模的相同问题。在...
栈可以通过数组实现,这种方式称为顺序栈。《Java基础复习笔记05数据结构-栈》中给出的代码示例即为一种顺序栈的实现。关键点如下: 1. **初始化**:定义一个固定大小的数组 `objects` 和一个整型变量 `elementSize...