首页 > 编程语言 >Java手写实现栈【数据结构与算法】

Java手写实现栈【数据结构与算法】

时间:2022-10-03 23:34:30浏览次数:75  
标签:myArrayStack Java elementData pop topIndex println return 手写 数据结构

package algorithm;

import java.util.Arrays;
import java.util.Iterator;

/**

  • @author Administrator
  • @date 2022-09-12 16:38
  • 数组栈
    */
    public class MyArrayStack {
    // 定义一个数组
    private Object[] elementData;
    // 顶部的索引
    private int topIndex;
    // 构造方法确定栈的长度
    public MyArrayStack(int size) {
    this.elementData = new Object[size];
    }
    /**
  • 定义迭代器
  • @return
    */
    @Override
    public Iterator iterator() {
    return new MyArrayStackIter();
    }
    class MyArrayStackIter implements Iterator{
    @Override
    public boolean hasNext() {
    return topIndex != elementData.length;
    }
    @Override
    public E next() {
    return pop();
    }
    @Override
    public void remove() {
    pop();
    }
    }
    public boolean push(E element){
    // 判断扩容两倍
    if(topIndex >= elementData.length){
    elementData = Arrays.copyOf(elementData,elementData.length << 1);
    }
    elementData[topIndex++] = element;
    return true;
    }
    // 删除并出栈 是否删除就看topIndex本身的大小是否改变
    public E pop(){
    if(topIndex <= 0){
    throw new RuntimeException("栈为空");
    }
    return (E) elementData[--topIndex];
    }
    // 不删除出栈 栈顶元素
    public E peek(){
    if(topIndex <= 0){
    throw new RuntimeException("栈为空");
    }
    return (E) elementData[topIndex - 1];
    }
    public static void main(String[] args) {
    MyArrayStack myArrayStack = new MyArrayStack(5);
    myArrayStack.push("11");
    myArrayStack.push("22");
    myArrayStack.push("33");
    System.out.println("-----------");
    System.out.println(myArrayStack.pop());
    System.out.println(myArrayStack.pop());
    System.out.println(myArrayStack.pop());
    System.out.println(myArrayStack.pop());
    // Iterator iterator = myArrayStack.iterator();
    // while (iterator.hasNext()){
    // System.out.println(iterator.next());
    // }
    }
    }

好看请赞,养成习惯:) ,作者:靠谱杨​, 转载请注明原文链接​

关于笔者:​​ 我的主页 ​

文章同步51CTO,可以帮忙踩一踩 ~ ​​我的51CTO博客​

更多日常分享尽在我的VX公众号:小杨的挨踢IT生活

Java手写实现栈【数据结构与算法】_java



标签:myArrayStack,Java,elementData,pop,topIndex,println,return,手写,数据结构
From: https://blog.51cto.com/reliableyang/5730622

相关文章

  • Java 四则运算 继承版
    packageT1;importjava.util.Scanner;publicclassA_Text{staticinttitle_n=30;staticScannercin=newScanner(System.in);publicstaticvoidmain(......
  • Java中的多态
    Java中的多态一、多态的概述1、同一个对象,在不同时刻表现出来的不同形态2、多态的前提和体现有继承/实现关系有方法重写有父类引用指向子类对象3、代码示例:......
  • java基础 Arrays.sort()用法
    1.作用对数组按照一定顺序排列,默认为升序。排列过程中为快排,不需要额外的空间,也不需要重新定义一个数组来接收它。示例:publicclassTest{publicstaticvoidm......
  • 每天一个小java练习(牢子好可爱啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊)2022.10.1
    练习题:接收用户输入的3个整数,并将它们的最大值作为结果输出:下面是我的代码以及运行截图啦啦啦啦:  这个本身很基础,,但是涉及到了?:的用法,就记录一下......
  • 力扣205(java)-同构字符串(简单)
    题目:给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一......
  • 程序、进程和线程 Java多线程的状态【杭州多测师】【杭州多测师_王sir】
    CPU是以时间片的方式为进程分配CUP处理时间的,如果当一个进程同时要完成几件事的时候,如当从网上下载文件的时候,需要一边下载一边显示进度而且还要一边保存,如果按照单线程的......
  • java网络编程--4 UDP
    java网络编程--4UDP1.7、UDP发短信:不用连接,但是需要知道对方的地址主要包含两个类:DatagramPacket和DatagramSocket发送消息发送端:packagecom.ssl.lesson03;im......
  • Java学习之:静态初始化块、包、参数传递机制
    关键字static和静态初始化块static普通变量和方法从属于对象,而static修饰的成员变量和方法从属于类。静态方法:被static修饰的方法叫做静态方法,又被称为类方法。非static的方......
  • Java对象序列化和反序列化
    Java类的序列化和反序列化序列化:指将对象转换为字节序列的过程,也就是将对象的信息转换成文件保存。反序列化:将字节序列转换成目标对象的过程,也就是读取文件,并转换为对象。几......
  • 浙江大学陈越老师《数据结构与算法》课程笔记
    目录1.1什么是数据结构1.1解决问题方法的效率1.2数据结构的定义1.3抽象数据类型1.2什么是算法1.2.1算法指标1.2.2复杂度的渐进表示法1.2.3例子—求最大连续子列和2......