# 数据结构-简单栈的实现

简单的栈的实现，栈元素为类型为int，利用一个数组实现，使用时，构造栈有两种方式，一种为不指定栈的大小，

push(int value)  压栈
int pop()  弹栈
int peek()  查看栈顶
boolean isEmpty()  判断栈是否为空
boolean isFull()  判断是否已满，若为自动增长模式，即判断是否已达到当前栈的大小的值
public int getSize()  获取栈的大小

/**
* Created by logaxy on 2017/1/3.
*/
public class MyStack {

private boolean actoIncrement = true;//栈是否自增长，当指定大小时为否
private static int INITIALSIZE = 4;//不指定栈大小时的初始化大小
private int array[];//栈以一个数组实现
private int top;

MyStack() {
array = new int[INITIALSIZE];
top = -1;
}

MyStack(int maxSize) {
actoIncrement=false;
if (maxSize < 0 || maxSize == 0)
throw new IllegalArgumentException();
array = new int[maxSize];
top = -1;
}

void push(int value) {
if (isFull()) {
if (actoIncrement) {
int[] temp = array;
array = new int[2 * array.length];
System.arraycopy(temp, 0, array, 0, temp.length);

} else {
throw new IndexOutOfBoundsException();
}
}

array[++top] = value;
}

int pop() {
if (isEmpty())
throw new IndexOutOfBoundsException();

return array[top--];
}

int peek() {
if (isEmpty())
throw new IndexOutOfBoundsException();

return array[top];
}

boolean isEmpty() {
return (top == -1);
}

boolean isFull() {
return !(top < array.length - 1);
}

public int getSize() {
return array.length;
}

}


测试程序：

public class Main {

public static void main(String[] args) {
testStack();
}

public static void testStack(){
MyStack myStack=new MyStack();
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
System.out.println("Top Is: "+myStack.peek());
System.out.println("Size IS:"+myStack.getSize());
System.out.println("Is Full: "+myStack.isFull());
myStack.push(5);
myStack.push(6);
System.out.println("Top Is: "+myStack.peek());
System.out.println("Size IS:"+myStack.getSize());
System.out.println("Is Full: "+myStack.isFull());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println("Is Empty:"+myStack.isEmpty());
System.out.println("Size IS:"+myStack.getSize());
}
}


Top Is: 4
Size IS:4
Is Full: true
Top Is: 6
Size IS:8
Is Full: false
6
5
4
3
2
1
Is Empty:true
Size IS:8

• 本文已收录于以下专栏：

## 简单的文本行编辑程序——基于栈

• Dakuan_chen
• 2017年04月17日 21:28
• 406

## 数据结构基础（4）C语言实现栈--链式存储（动态栈）

• Davidluo001
• 2015年06月19日 14:14
• 2255

## java数据结构与算法之栈（Stack）设计与实现

【版权申明】转载请注明出处（请尊重原创，博主保留追究权） http://blog.csdn.net/javazejian/article/details/53362993 出自【zejia...
• javazejian
• 2016年11月28日 12:27
• 9564

## 数据结构（java语言描述）-- 栈的两种简单实现

package com.cly.sjjg; import java.util.Iterator; import java.util.LinkedList; import java.util.List...
• u011726984
• 2014年10月01日 13:01
• 2557

## 数据结构 — 3.模式匹配

【问题描述】试编写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如"序列1&序列2"模式的字符序 列. 其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序.例如,"a+b&b+a...
• PeersLee
• 2015年10月27日 17:36
• 2930

## 数据结构之 栈（C语言实现）

• men_wen
• 2017年03月14日 23:23
• 372

## Java数据结构----栈(Stack)源码分析和个人简单实现

• oChangWen
• 2016年02月17日 23:29
• 2935

## 自定义实现的一个简单的栈结构

package testJava; import java.util.Arrays; public class MyStack { //设置栈的默认大小 private static int ...
• baidu_25820069
• 2016年10月15日 00:35
• 724

## 数据结构（严蔚敏）之三——顺序栈之c语言实现

• GreenHandCGL
• 2015年04月03日 00:07
• 2191

## 数据结构(5)--栈的定义以及相关操作的实现

﻿﻿ 参考书籍：数据结构（C语言版） 严蔚敏 吴伟民编著 清华大学出版社 1.栈的定义     栈（stack）是限定在表尾一端进行插入或删除操作的线性表。在栈中，允许插入和删除操作的一端称为栈...
• u010366748
• 2016年02月05日 22:26
• 1689

举报原因： 您举报文章：数据结构-简单栈的实现 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)