博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现栈
阅读量:4964 次
发布时间:2019-06-12

本文共 3045 字,大约阅读时间需要 10 分钟。

 
1.什么是栈
栈(stack)是仅在表尾部插入和删除的操作的线性表
1.允许插入和删除的一段称之为栈顶(top),另一端称之为栈尾(bottom)
2.不包含任何数据元素的栈称之为空栈
特点:先进后出,后进先出
注意:1.栈也称之为lifo结构
2.栈的插入操作称之为进栈,也称之为压栈,入栈
3.栈的删除操作。称之为出栈,也称之为弹栈
3.实现细节和注意要点
栈最重要的是它的特点:先进后出,在生活中有很多场景类似。在一个栈的结构里需要定义栈的大小Maxsize,定义一个游标top,初始化为-1,用来指向栈尾,当入栈一个数据,top+1,弹栈一个数据top-1,第一次入栈top就变为0,当top变为-1,说明栈空了,当top变为Maxsize-1,说明栈满了。
stack类:
1 package Stack; 2 /** 3 * @类名  stack.java 4 * @作者       修仙小华 5 * @版本  V1.0 6 * @日期  2019年7月23日-下午3:59:27 7 * @描述   8 * 9 */10 public class stack {11     private int maxSize;//栈的大小12     private int top;//栈顶下标,top是移动的13     String[] arr;14     char[] arrC;15     int[] arrI;16     17     public stack(){18     }19 20     /**21      * 设置传入参数为int的构造方法22      */23     public stack (int size) {24         this.maxSize=size;25         top=-1;//初始化为-126         arr=new String[maxSize];27         arrC=new char[maxSize];28         arrI=new int[maxSize];29     }30     31     /**32      *设置传入参数为String的构造方法33      */34     public stack (String input) {35         this.maxSize=input.length();36         top=-1;//初始化为-137         arr=new String[maxSize];38     }39     40     /**41      * 入栈,整数  字符型  字符串型数据入栈方法重载42      */43     public void push(String data) {44         arr[++top]=data;45     }46     public void push(char data) {47         arrC[++top]=data;48     }49     public void push(int data) {50         arrI[++top]=data;51     }52     /**53      * 入栈,整数  字符型  字符串型数据出栈方法54      */55     public String pop() {56         return arr[top--];57     }58     public char popC() {59         return arrC[top--];60     }61     public int popI() {62         return arrI[top--];63     }64     /**65      * 获取栈顶元素66      */67     public String peek() {68         return arr[top];69     }70     public char peekC() {71         return arrC[top];72     }73     public int peekI() {74         return arrI[top];75     }76     /**77      * 判断栈是否满了78      */79     public boolean isFull() {80         return maxSize-1==top;81     }82     /**83      * 判断栈是否为空84      */85     public boolean isEmpty() {86         return top==-1;87     }88     /**89      * 利用栈将将字符串反序输出90      */91     92 }

使用栈实现字符串的逐个字符输出:

public class Reseve {    String input;        public Reseve(String input) {        this.input=input;    }    public String doReseve() {        stack sta=new stack(input.length());        for (int i = 0; i < sta.arr.length; i++) {            sta.push(input.charAt(i));        }        String output="";        while(sta.isEmpty()!=true) {            output=output+sta.popC();        }        return output;    }}

测试类:

1 public class stactTest { 2  3     public static void main(String[] args) { 4         stack sta=new stack(4); 5         Reseve re=new Reseve("ABCDE"); 6         sta.push("张三"); 7         sta.push("李四"); 8         sta.push("王二"); 9         sta.push("李四");10         System.out.println(sta.isEmpty());11         System.out.println(sta.peek());12         sta.peek();13         sta.pop();14         System.out.println(re.doReseve());15     }16 17 }

 

 

转载于:https://www.cnblogs.com/had1314/p/11267966.html

你可能感兴趣的文章
Hitachi Content Platform学习
查看>>
kubernetes1.3搭建dns服务
查看>>
【性能调优】一次关于慢查询及FGC频繁的调优经历
查看>>
Swift单例
查看>>
Qt之C语言类型typedef a[]等
查看>>
配置文件的格式选型
查看>>
树状打印二叉树
查看>>
常用Java排序算法
查看>>
python 之路 《三》列表与元组
查看>>
在Exchange 2013中重置用户密码
查看>>
day04作业
查看>>
Android中RelativeLayout各个属性的含义
查看>>
Leetcode-414 Third Maximum Number(第三大的数)
查看>>
Navicat http 通道增加验证
查看>>
UE4 的 kDopTree
查看>>
记录一下安装oracl遇到的错误与注意事项
查看>>
String.valueOf(null) 报空指针
查看>>
Logback configuration
查看>>
制作一个简单的钓鱼网站
查看>>
喝酒喝出的计算机文化
查看>>