码迷,mamicode.com
首页 > 编程语言 > 详细

Java数据结构系列之——栈(1):栈的顺序存储结构及操作

时间:2014-11-19 18:51:17      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   java   数据   on   2014   log   as   

package Stack;
/**
 * 栈的定义:限定只在表末尾进行增加和删除操作的线性表
 * 栈的特点:先进后出FILO(First In Last Out)
 * 		  通常我们把允许插入和删除的一段称为栈顶(top),另一端
 *       称为栈底,不包含任何元素的栈称为空栈
 * 栈的出栈操作我们一般称为进栈或者压栈或者入栈
 * 栈的删除操作我们一般称为出栈或者弹栈
 * 
 * 这里我们用数组来实现栈的顺序存储结构及各种操作
 * @author wl
 *
 */
public class MyStack {
	private int[] array;//用来存放栈的元素
	private int top;//栈顶指针
	
	/**
	 * 默认构造函数,用于初始化栈,这里我们
	 * 将栈的大小默认初始化为10
	 */
	public MyStack(){
		array=new int[10];
		top=-1;
	}
	
	/**
	 * 自定义构造函数,可以用于指定栈的初始化
	 * 空间大小
	 */
	public MyStack(int capacity){
		array=new int[capacity];
		top=-1;
	}
	
	/*
	 * 压栈操作
	 */
	public void push(int value){
		if(isFull()){//栈满
			throw new RuntimeException("栈已满,元素'"+value+"'压栈不成功");
		}
		array[++top]=value;
	}
	
	public int peek(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top];
	}
	/**
	 * 出栈操作
	 * @return
	 */
	public int pop(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top--];
	}
	
	/**
	 * 判断栈是否为空
	 * @return
	 */
	public boolean isEmpty(){
		return top==-1;
	}
	/**
	 * 判断栈是否满了
	 */
	public boolean isFull(){
		return top==array.length-1;
	}
}

Java数据结构系列之——栈(1):栈的顺序存储结构及操作

标签:blog   io   ar   java   数据   on   2014   log   as   

原文地址:http://blog.csdn.net/tmwl0728/article/details/41283283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!