数组实现堆栈——Java实现
1 package struct;
2
3
4 //接口
5 interface IArrayStack{
6 //栈的容量
7 int length();
8 //栈中元素个数(栈大小)
9 int size();
10 //取栈顶元素
11 Object top();
12 //判断栈是否为空
13 boolean isEmpty();
14 //入栈
15 Object pop();
16 //出栈
17 Object push(Object value);
18 //清空栈
19 void clear();
20 }
21
22
23 //实现接口的StackImpl类
24 class StackImpl implements IArrayStack{
25 static Object[] arr;//数组
26 private int top;//标记栈顶位置,并且表示栈的容量大小
27 private static int MAXSIZE = 10;//数组的最大长度(常量)
28 //构造方法
29 public StackImpl(){
30 arr = new Object[MAXSIZE];
31 top = 0;
32 }
33 //求堆栈容量
34 public int length() {
35 return MAXSIZE;
36 }
37 //求堆栈中元素的个数,即堆栈大小
38 public int size(){
39 return top;
40 }
41 //取栈顶元素
42 public Object top() {
43 return arr[top];
44 }
45 //判断堆栈是否为空
46 public boolean isEmpty() {
47 return (size() == 0);
48 }
49 //出栈
50 public Object pop() {
51 if(isEmpty()){
52 System.out.println("The Stack is empty");
53 return -1;
54 }
55 Object value = arr[top - 1];
56 top--;
57 arr[top -1] = null;
58 return value;
59 }
60 //对栈进行扩容(每次扩容一倍)
61 public void expand(){
62 Object[] largerArr = new Object[size()*2];
63 for(int index = 0;index < top;index++){
64 largerArr[index] = arr[index];
65 }
66 arr = largerArr;
67 MAXSIZE = arr.length;
68 }
69 //入栈
70 public Object push(Object value) {
71 //如果超过入栈元素数组长度
72 if(top == arr.length){
73 expand();
74 }else{
75 arr[top] = value;
76 top++;
77 }
78 return arr;
79 }
80 //打印堆栈中元素
81 public static void print(){
82 myPrint1(arr);
83 }
84 private static void myPrint1(Object[] obj){
85 for(int i = 0;i < obj.length;i++){
86 System.out.println(obj[i] + " ");
87 }
88 }
89 //清空堆栈
90 public void clear() {
91 for(int i = top;i > 0;i--){
92 arr[i] = null;
93 top--;
94 }
95 }
96 }
97
98
99 //测试函数
100 public class ArrayStack {
101 public static void main(String[] args) {
102 IArrayStack stack = new StackImpl();
103 System.out.println("==================栈中不存在元素测isEmpty函数================");
104 System.out.println(stack.isEmpty());
105 System.out.println("==================测length函数================");
106 System.out.println( stack.length());
107 System.out.println("==================测push及print函数================");
108 stack.push("lemon");
109 stack.push("hah");
110 stack.push(1);
111 stack.push(9);
112 stack.push("lemon");
113 stack.push("hah");
114 stack.push(1);
115 stack.push(9);
116 stack.push("lemon");
117 stack.push("hah");
118 stack.push(1);
119 stack.push(9);
120 StackImpl.print();
121 System.out.println("==================扩容后测length函数================");
122 System.out.println(stack.length());
123 System.out.println("==================测top函数================");
124 System.out.println(stack.top());
125 System.out.println("==================测size函数================");
126 System.out.println( stack.size());
127 System.out.println("==================测pop函数================");
128 stack.pop();
129 stack.pop();
130 System.out.println( stack.size());
131 System.out.println("==================栈中存在元素测isEmpty函数================");
132 System.out.println(stack.isEmpty());
133 System.out.println("==================clear后侧size函数================");
134 stack.clear();
135 System.out.println( stack.size());
136 }
137 }


数组实现堆栈——Java实现的更多相关文章
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- 数据结构(3):java使用数组模拟堆栈
堆栈原理: 数组模拟堆栈: //数组模拟栈 class ArrayStack{ //栈顶 private int top = -1; private int maxSize; private int[ ...
- Java 数组实现堆栈操作
class Stack { private int stck[] ; private int tos ; Stack(int size) { // 一个参数的构造参数 stck = new int[s ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
- Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集
ylbtech-Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集 1.返回顶部 1. Java 实例 - 数组并集 Java 实例 以下实例演示了如何使用 unio ...
- ylbtech-Java-Runoob-高级教程-实例-数组:15. Java 实例 – 判断数组是否相等
ylbtech-Java-Runoob-高级教程-实例-数组:15. Java 实例 – 判断数组是否相等 1.返回顶部 1. Java 实例 - 判断数组是否相等 Java 实例 以下实例演示了如 ...
- Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素
ylbtech-Java-Runoob-高级教程-实例-数组:14. Java 实例 – 在数组中查找指定元素 1.返回顶部 1. Java 实例 - 在数组中查找指定元素 Java 实例 以下实例 ...
- Java-Runoob-高级教程-实例-数组:13. Java 实例 – 数组交集
ylbtech-Java-Runoob-高级教程-实例-数组:13. Java 实例 – 数组交集 1.返回顶部 1. Java 实例 - 数组交集 Java 实例 以下实例演示了如何使用 reta ...
- Java-Runoob-高级教程-实例-数组:12. Java 实例 – 数组差集
ylbtech-Java-Runoob-高级教程-实例-数组:12. Java 实例 – 数组差集 1.返回顶部 1. Java 实例 - 数组差集 Java 实例 以下实例演示了如何使用 remo ...
随机推荐
- linux 关于 环境变量
有关环境变量的文件 系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量 用户级环境变量:每一个登录到系统的用户只能够读取属于自己的用户级的环境变量 文件加载顺序: ==& ...
- Vue 基础自查——条件渲染和列表渲染
v-if和v-show的区别是什么? v-if和v-for为什么不能一起用? v-for中的key有什么作用? 1 v-if 和 v-show 1.1 作用 都用来控制元素的显示和隐藏 1.2 控制元 ...
- VSCode Java 开发环境配置 详细教程
VSCode Java 开发环境配置 详细教程 配置java 下载 用于现在大多数使用者用的是java 8,小白的我先安装java 8好了,^ w ^. 下载地址:Java 8 | Java SE 打 ...
- 用 Python 修改微信(支付宝)运动步数,轻松 TOP1
用 Python 修改微信(支付宝)运动步数,轻松 TOP1 项目意义 如果你想在支付宝蚂蚁森林收集很多能量种树,为环境绿化出一份力量,又或者是想每天称霸微信运动排行榜装逼,却不想出门走路,那么该py ...
- 蓝图before request
方法1 @bp.before_request def test(): print("test") 方法2 def bp_before_request(): print(test) ...
- hbuilder中webview调试console.log无法输出日志的问题
遇到这个问题的亲,肯定是用的模拟器来测试的,其实你只要换成真机测试就能打印了,前提是安卓系统. 有问题欢迎留言,如果你觉得这个文章对你有帮助,就请点个赞吧!
- 大爽Python入门教程 3-2 条件判断: if...elif..else
大爽Python入门公开课教案 点击查看教程总目录 简单回顾if 回顾下第一章的代码 >>> x = 5 >>> if x > 0: ... print(&q ...
- python实现图像二值化
1.什么是图像二值化 彩色图像: 有blue,green,red三个通道,取值范围均为0-255 灰度图:只有一个通道0-255,所以一共有256种颜色 二值图像:只有两种颜色,黑色和白色,二值化就是 ...
- [bzoj1072]排列
考虑用状压dp枚举排列,即f[i][j]表示当前状态为i,余数为j的方案数,考虑在末尾新增一个字符来转移即可,注意最后答案要除以排列组合 1 #include<bits/stdc++.h> ...
- [bzoj5291]链上二次求和
记$bi=b_{i-1}+ai$,$ci=c_{i-1}+bi$,那么答案就是$\sum_{i=l}^{r}\sum_{j=0}^{n-i}b_{j+i}-bj=(r-l+1)cn-\sum_{i=l ...