数组实现堆栈——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 ...
随机推荐
- docker 启动tomcat后,外部访问报HTTP Status 404 – 未找到报错解决
1.检查防火墙,防火墙是关闭的状态 2.检查docker中的tomcat 2.1 使用命令:docker container ps ,查看tomcat运行id 2.2 进入docker的tomcat ...
- vue 插槽slot总结 slot看这篇就够了
一直模糊所以梳理一下,看了好多篇园友的文章和官网文档在这整理一下 默认插槽 //slot组件<template> <div class="slots"> s ...
- Redis安装、配置和卸载
1.安装 mkdir /usr/local/redis 添加目录 wget [http://download.redis.io/releases/redis-4.0.1](http://downloa ...
- Vulnstack内网靶场4
环境 漏洞详情 (qiyuanxuetang.net) 仅主机模式内网网段192.168.183.0/24 外网网段192.168.157.0/24 其中Ubuntu作为对外的内网机器 攻击机kali ...
- 攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup
攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup 题目介绍 题目考点 PHP代码审计 Writeup 打开 http://220.249.52.134:37877 常规操 ...
- 简单的SQl时间序列生成,每次时间间隔10分钟。
create table #timeseries(Times datetime not null) go declare @firstdate datetime , @lastdate datetim ...
- jQuery css()选择器使用说明
css选择器只是jquery中的一个功能罢了,下面我来给各位朋友详细介绍jQuery css()选择器使用方法与说明详解,有需要了解学习的同学可参考. CSS操作有一个重要的方法:CSS() CSS( ...
- SpringCloud升级之路2020.0.x版-35. 验证线程隔离正确性
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 上一节我们通过单元测试验证了重试的正确性,这一节我们来验证我们线程隔离的正确性,主要包括: ...
- Python 爬取 房天下
... import requests from requests import ConnectionError from bs4 import BeautifulSoup import pymong ...
- Ultraedit和写字板修改Tomcat 6.0的server.xml不生效
转:http://blog.csdn.net/greencacti/article/details/6615321 本人在修改Tomcat 6.0的server.xml的时候,发现写字板修改完保存的时 ...