栈Stack的相关操作(java)
来源:互联网 发布:npm 淘宝 编辑:程序博客网 时间:2024/06/03 09:10
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package arthur.datastruct.programe;
import java.util.*;
/**
*
* @author dell
*/
public class MyStack {
private int size;//栈中元素的个数
private Object[] elements;//栈数组
private final int DEFAULT_CAPACITY = 10;//栈默认的大小
public MyStack() {
this.size = 0;
elements = new Object[DEFAULT_CAPACITY ];
}
/**
* 返回栈中元素的个数
* @return
*/
public int size() {
return size;
}
/**
* 判断栈是否为空
* @return
*/
public boolean empty() {
return 0 == size();
}
/**
* 返回栈的首部但不移除首部元素
* @return
*/
public Object peek() {
if (this.empty()) {
throw new EmptyStackException();
}
int index = size;
return elements[--index];
}
/**
* 移除堆栈顶部的对象,并作为此函数的值返回该对象。
* @return
*/
public Object pop() {
Object object = this.peek();
int index = size;
remove(--index);
return object;
}
/**
* 删除索引为index的那个元素
* @param index
*/
public void remove(int index) {
if (index >= size()) {
throw new ArrayIndexOutOfBoundsException(index + " >= "
+ size());
} else if (index < 0) {
throw new ArrayIndexOutOfBoundsException(index);
}
int j = size - index - 1;//得到位于索引index之后的元素的下标
if(j>0)//如果下标存在
System.arraycopy(elements, index+1, elements, index, j);
elements[--size] = null;
}
/**
* 入栈操作,把项压入堆栈顶部。
* @param object
* @return
*/
public Object push(Object object) {
if(null==object)
throw new NullPointerException();
if (this.size > elements.length) {
this.doubleCapacity();
}
elements[size++] = object;
return object;
}
/**
* 扩充栈的空间,如果栈满了,就把空间扩从为原来的二倍
* @return
*/
private void doubleCapacity() {
int newCapacity = elements.length << 1;
Object[] newElements = new Object[newCapacity];
System.arraycopy(elements, 0, newElements, 0, elements.length);
elements = newElements;
}
public static void main(String[] args){
MyStack ms = new MyStack();
ms.push(new Integer(2));
ms.push(new Integer(4));
System.out.println("size ==" + ms.size());
System.out.println(ms.peek());
System.out.println(ms.pop());
System.out.println(ms.peek());
}
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package arthur.datastruct.programe;
import java.util.*;
/**
*
* @author dell
*/
public class MyStack {
private int size;//栈中元素的个数
private Object[] elements;//栈数组
private final int DEFAULT_CAPACITY = 10;//栈默认的大小
public MyStack() {
this.size = 0;
elements = new Object[DEFAULT_CAPACITY ];
}
/**
* 返回栈中元素的个数
* @return
*/
public int size() {
return size;
}
/**
* 判断栈是否为空
* @return
*/
public boolean empty() {
return 0 == size();
}
/**
* 返回栈的首部但不移除首部元素
* @return
*/
public Object peek() {
if (this.empty()) {
throw new EmptyStackException();
}
int index = size;
return elements[--index];
}
/**
* 移除堆栈顶部的对象,并作为此函数的值返回该对象。
* @return
*/
public Object pop() {
Object object = this.peek();
int index = size;
remove(--index);
return object;
}
/**
* 删除索引为index的那个元素
* @param index
*/
public void remove(int index) {
if (index >= size()) {
throw new ArrayIndexOutOfBoundsException(index + " >= "
+ size());
} else if (index < 0) {
throw new ArrayIndexOutOfBoundsException(index);
}
int j = size - index - 1;//得到位于索引index之后的元素的下标
if(j>0)//如果下标存在
System.arraycopy(elements, index+1, elements, index, j);
elements[--size] = null;
}
/**
* 入栈操作,把项压入堆栈顶部。
* @param object
* @return
*/
public Object push(Object object) {
if(null==object)
throw new NullPointerException();
if (this.size > elements.length) {
this.doubleCapacity();
}
elements[size++] = object;
return object;
}
/**
* 扩充栈的空间,如果栈满了,就把空间扩从为原来的二倍
* @return
*/
private void doubleCapacity() {
int newCapacity = elements.length << 1;
Object[] newElements = new Object[newCapacity];
System.arraycopy(elements, 0, newElements, 0, elements.length);
elements = newElements;
}
public static void main(String[] args){
MyStack ms = new MyStack();
ms.push(new Integer(2));
ms.push(new Integer(4));
System.out.println("size ==" + ms.size());
System.out.println(ms.peek());
System.out.println(ms.pop());
System.out.println(ms.peek());
}
}
- 栈Stack的相关操作(java)
- stack 顺序栈的相关操作
- stack相关操作
- 【Java】Stack相关学习
- 栈(Stack)的基本操作
- stack栈的基本操作
- java中栈Stack类操作
- 栈Stack的一些基本操作
- Java初始值的相关操作
- java 数组的相关操作
- Java日期的相关操作
- Java 的文件相关操作
- java 日期相关的操作
- Java的文件相关操作
- Java 用数组实现栈 (Stack),包括栈的初始化,入栈、出栈等操作
- [Stack]主要栈操作
- 栈的相关操作
- 栈的相关操作
- linux的内存管理机制(2)
- 转载一篇关于Setsockopt的文章
- WordPress模板教程
- poj 1835 宇航员
- 浙大复试上机--zoj 问题
- 栈Stack的相关操作(java)
- Win7英文版安装中文语言包过程及方法总结
- 将压缩包转换为图片
- New Concept English Unit 1
- 第18周报告2:二维数组(失败)
- Windows Phone开发(10):常用控件(上)
- (连载)一步一步教你做黑白棋游戏(二)
- asp.net 中类库dll没有方法提示的解决方案
- 第九周任务