数据结构-简单栈的实现

原创 2017年01月03日 19:42:00
简单的栈的实现,栈元素为类型为int,利用一个数组实现,使用时,构造栈有两种方式,一种为不指定栈的大小,
默认原始大小为4,当元素超过当前大小时,则栈大小增长一倍,另一种为指定栈的大小,超过指定大小时抛出异常。
栈的操作有:
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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【自己动手写数据结构】 -- 简单顺序栈的实现

/* * 简单顺序栈的实现 */ #include #include #include /* * 自定义bool类型 */ typedef int BOOL ; #define TRUE 1...

几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇

//简单实现,模板类 #include using namespace std; template class Queue { public:     Queue();     ~Queue();...

数据结构(java语言描述)-- 栈的两种简单实现

package com.cly.sjjg; import java.util.Iterator; import java.util.LinkedList; import java.util.List...

算法与数据结构基础5:C++栈的简单实现

堆栈是基于队列的,只需要要稍微改一下就ok了,把代码贴在下面 // Stack.h #include #include #include using namespace std; ...

Java数据结构----栈(Stack)源码分析和用链表简单实现

一、Stack源码分析1.继承结构   栈是数据结构中一种很重要的数据结构类型,因为栈的后进先出功能是实际的开发中有很多的应用场景。Java API中提供了栈(Stacck)的实现。   Stac...

简单数据结构之 vector 栈(C++ vector 实现)

/* ============================================================================ Name : stac...

Java -- 栈、队列等数据结构的简单链表实现

Java -- 栈、队列等数据结构的链表实现 链表是一种递归的数据结构,它或者为null,或者是指向一个节点的引用,该节点含有一个泛型的元素和一个指向另一条链表的引用。在链表头部插入元素,插...

数据结构--链式栈、顺序栈的基本实现与简单应用:进制转换

一、栈的基本概念:1、栈(Stack),是基本数据结构中比较重要的一种,其遵循的基本原则是:先进后出(First In Last Out,FILO);我们编程时操作系统为函数参数压栈,其系统内核栈的实...

几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇

//构造栈--模板类 #include using namespace std; template class Stack { public:     Stack();     ~Stack(); ...

数据结构的简单算法实现

  • 2013年09月01日 11:13
  • 24KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构-简单栈的实现
举报原因:
原因补充:

(最多只允许输入30个字)