`
MoonMonster
  • 浏览: 35634 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java - - 数组实现栈基本功能

    博客分类:
  • Java
阅读更多
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
1
2
分享到:
评论

相关推荐

    【03-流程控制与数组】

    •Java的数组既可以存储基本类型的数据,也可以存储引用类型的数据。 •值得指出的是:数组也是一种数据类型,它本身是一种引用类型。 定义数组 •Java语言支持两种语法格式来定义数组: –type[ ] ...

    Java开发技术大全(500个源代码).

    hasRecall.java 可以完成回调功能的类 HasStatic.java 一个简单的拥有静态成员的类 hideMember_1.java 成员隐藏示例1 hideMember_2.java 成员隐藏示例2 hideMember_3.java 成员隐藏示例3 hideMember_4.java ...

    疯狂JAVA讲义

    1.6 Java程序的基本规则 16 1.6.1 Java程序的组织形式 16 1.6.2 Java源文件的命名规则 17 1.6.3 初学者容易犯的错误 18 1.7 垃圾回收机制 20 1.8 何时开始使用IDE工具 21 学生提问:老师,我想学习Java编程,...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    2.3.7 java平台实现中的bug 2.3.8 测试 2.4 平台无关的七个步骤 2.5 平台无关性的策略 2.6 平台无关性和网络移动对象 2.7 资源页 第3章 安全 3.1 为什么需要安全性 3.2 基本沙箱 3.3 类装载器...

    JAVA面试题最全集

    请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来. 43.请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46....

    Java语言基础下载

    基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级和表达式的类型转换 62 独立实践 70 第五章:数组 71 学习目标 71 数组...

    数据结构与算法分析_Java语言描述(第2版)]

    remove方法对LinkedList类的使用3.3.5 关于ListIterator接口3.4 ArrayList类的实现3.4.1 基本类3.4.2 迭代器、Java嵌套类和内部类3.5 LinkedList类的实现3.6 栈ADT3.6.1 栈模型3.6.2 栈的实现3.6.3 应用3.7 队列...

    JAVA 范例大全 光盘 资源

    实例19 数组实现顺序栈与队列 46 实例20 Arrays数组的应用 50 第5章 面向对象设计 54 实例21 图形面积与周长(抽象类) 54 实例22 宠物结婚(封装) 56 实例23 一个盒子(继承) 58 实例24 学生的生活(多态)...

    数据结构之队列的java实现

    队列在计算机术语中使用queue,和list(排)其实是一个意思。队列也是一种数据结构,类似于栈,只是与栈相反,在队列中先...  下面用Java实现队列的基本功能(数组版)。 package cn.zhf.list; public class MyQueu

    数据结构与算法分析 Java语言描述第2版

    remove方法对LinkedList类的使用3.3.5 关于ListIterator接口3.4 ArrayList类的实现3.4.1 基本类3.4.2 迭代器、Java嵌套类和内部类3.5 LinkedList类的实现3.6 栈ADT3.6.1 栈模型3.6.2 栈的实现3.6.3 应用3.7 队列...

    深入Java虚拟机

    2.3.7 Java平台实现中的bug 2.3.8 测试 2.4 平台无关的七个步骤 2.5 平台无关性的策略 2.6 平台无关性和网络移动对象 2.7 资源页 第3章 安全 3.1 为什么需要安全性 3.2 基本沙箱 3.3 类装载器...

    数据结构与算法分析_Java语言描述(第2版)

    3.2.1 表的简单数组实现 3.2.2 简单链表 3.3 JavaCollectionsAPI中的表 3.3.1 Collection接口 3.3.2 Iterator接口 3.3.3 List接口、ArrayList类和LinkedList类 3.3.4 例:remove方法对LinkedList类的使用 3.3.5 ...

    突破程序员基本功的16课.part2

    1.1.1 Java数组是静态的 1.1.2 数组一定要初始化吗 1.1.3 基本类型数组的初始化 1.1.4 引用类型数组的初始化 1.2 使用数组 1.2.1 数组元素就是变量 1.2.2 没有多维数组 1.3 小结 第2课 对象与内存控制 2.1...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java 面试题 总结

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

Global site tag (gtag.js) - Google Analytics