zoukankan      html  css  js  c++  java
  • java代码实现栈

    1.栈的定义:

         栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。

    2.java代码实现栈

    数组实现:

    package test;
    
    public class stack {
    
        private int maxSize;// 栈的大小
        private int top;
        private char[] arr;
    
        public stack(int size) {
            maxSize = size;
            top = -1;
            arr = new char[maxSize];
        }
    
        public void push(char value) { // 压入数据
    
            arr[++top] = value;
        }
    
        public char pop() { // 弹出数据
    
            return arr[top--];
        }
    
        public char peek() { // 访问栈顶元素
    
            return arr[top];
        }
    
        public boolean isFull() { // 栈是否满了
    
            return maxSize - 1 == top;
        }
    
        public boolean isEmpty() { // 栈是否为空
    
            return top == -1;
        }
    
    }

    利用栈实现字符串的倒叙输出

    package test;
    
    public class Reverse {
        String input;
    
        public Reverse(String input) {
            this.input = input;
        }
    
        public String doReverse() {
            stack s = new stack(input.length());
            for (int i = 0; i < input.length(); i++) {
                s.push(input.charAt(i));
            }
            String output = "";
        while(!s.isEmpty()){
                output += s.pop();
        }
            return output;
    
        }
    
    }


    测试:

    @Test
        public void fun(){
            Reverse r=new Reverse("人国中是我");
            System.out.println(r.doReverse());
        }

    链式实现:

    package test;
    
    import java.util.LinkedList;
    
    public class stack1 {
    
        private LinkedList<Object> a = new LinkedList<Object>();
    
        public void push(Object o) {
            a.addFirst(o);
    
        }
    
        public Object pop() {
            return a.removeFirst();
        }
    
        public Object peek() {
            return a.getFirst();
        }
    
        public boolean empty() {
    
            return a.isEmpty();
        }
    
    }
  • 相关阅读:
    团队博客-会议之初
    5.2 个人作业2
    5.1 如何利用Intellij Idea搭建python编译运行环境
    4.27 python神器——Anaconda的安装与优化配置
    4.26 AlertDialog(对话框)详解
    4.25 xmapp启动mysql出现Error: MySQL shutdown unexpectedly.
    4.24 Android Studio下应用签名的方法以及获取 MD5、SHA1(签名)、SHA256 值
    4.23 2020.2新版本idea创建javaEE web文件
    4.22 Android studio 通过获取验证码用户登陆成功
    4.21 Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
  • 原文地址:https://www.cnblogs.com/y3596597/p/6832225.html
Copyright © 2011-2022 走看看