栈的Java简单实现

关于栈

  栈(Stack)是限定只能在一段进行插入和删除操作的线性表。

  进行插入和删除操作的一端称为“栈顶”(top),另一端称为“栈底”(bottom)。

  栈的插入操作称为“入栈”(push),栈的删除 操作称为“出栈”(pop)。

  栈具有后进先出(LIFO),先进后出(FILO)的特性。

Java Stack 类 

  栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

  堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

  除了由Vector定义的所有方法,自己也定义了一些方法:

序号

方法描述

1

boolean empty() 测试堆栈是否为空。

2

Object peek( )查看堆栈顶部的对象,但不从堆栈中移除它。

3

Object pop( )移除堆栈顶部的对象,并作为此函数的值返回该对象。

4

Object push(Object element)把项压入堆栈顶部。

5

int search(Object element)返回对象在堆栈中的位置,以 1 为基数。

自定的Stack Class

package DataStructe;

public class MyStack_Text {
    
    
    static class mystack
    {
        int mytop;
        int stack[];
        
        public mystack(int num) {
            mytop=-1;
            stack=new int[num];
        }
        /*出栈*/
        void mypop()
        {
            mytop--;
        }
        /*入栈*/
        void mypush(int x)
        {
            mytop++;
            stack[mytop]=x;
            
        }
        /*判空*/
        Boolean myisempty()
        {
            if(mytop==-1)
                return true;
            else
                return false;
        }
        /*取栈顶元素*/
        int mypeek()
        {
            int peek=stack[mytop];
            return peek;
        }
        /*栈大小*/
        int mysize()
        {
            return mytop+1;
        }
    }
    
    
    public static void main(String[] args) {
        mystack myStack=new mystack(20);
        myStack.mypush(1);
        myStack.mypush(2);
        myStack.mypush(3);
        myStack.mypush(4);
        System.out.print("栈大小为"+myStack.mysize());
        System.out.println();
        for(int i=myStack.mytop;i>=0;i--)
        {
            int get=myStack.mypeek();
            myStack.mypop();
            System.out.println(get);
        }
        
    }
    
    

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白的技术客栈

Python基础语法-内置数据结构之元组

今天给大家讲解Python的内置数据结构元组。前面的内容大家有没有复习呢? 元组的特点:不可变的列表,但是可哈希的。列表是不可哈希的。 元组创建及使用 使用()...

362120
来自专栏Android干货园

Kotlin初级(4)- - - 字符串和字符.md

13420
来自专栏技术专栏

Scala入门与进阶(三)- 函数

默认参数:在函数定义时,允许指定参数的默认值 $SPARK_HOME/conf/spark-defaults.conf

12430
来自专栏指尖下的Android

简单算法之冒泡排序

外层循环控制循环次数,内层循环控制比对元素的个数,因为冒泡排序是两两比对,五个元素的数组只需要比对四次,因为最后一个元素没有可比对的元素,内层循环判断条件j <...

9720
来自专栏程序你好

如何将Array转换为List?

可以使用 Arrays.asList() 方法, 该方法接受一个数组作为输入,并返回一个列表作为输出。

9820
来自专栏Flutter入门

About Kotlin-Kotlin中的类1About Kotlin(1)

因为是从Java的角度来学习Kotlin,在Java中,类作为第一等公民。故学习Kotlin,也先从其的类开始。

10930
来自专栏机器学习从入门到成神

海量数据处理之Bti-map详解

    所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以...

16310
来自专栏一个会写诗的程序员的博客

《Kotin 极简教程》第8章 函数式编程(FP)(2)

好了亲,前文中我们在函数式编程的世界里遨游了一番,现在我们把思绪收回来,放到在Kotlin中的函数式编程中来。

9620
来自专栏前端儿

JS实现简易的计算器

自认脑袋不够大,就实现一个普通版本的吧(支持正负数加减乘除等基本连续的运算,未提供括号功能)

93710
来自专栏闻道于事

Java之字符串String,StringBuffer,StringBuilder

String类: String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明。在Java中用String类的...

42450

扫码关注云+社区

领取腾讯云代金券