java:数据结构复习(二)数组栈
import java.util.Arrays;
import java.util.Scanner; /**
* @author 李正阳
*/
public class MyArraysStack<E> implements MyStack<E> {
private int DEFAULT_SIZE = 16;//定义栈的初始默认长度
private int capacity;//保存顺序栈的长度涉及扩容
public int size;//保存顺序栈中元素的个数
private Object[] elementData;//定义一个数组用于保存顺序栈中的元素 /**
* 初始化栈
*/
public MyArraysStack() {
elementData = new Object[DEFAULT_SIZE];
size = 0;
capacity = DEFAULT_SIZE;
} /**
* 清除栈中所有的元素
*
* @return
*/
@Override
public boolean clearStack() {
for (int i = 0; i < size; i++) {
elementData[i] = null;
}
return true;
} /**
* 栈是否为空
*
* @return true 空栈 false 非空栈
*/
@Override
public boolean isEmpty() {
if (size == 0) {
return true;
} else {
return false;
}
} /**
* 返回这个数组的长度
*
* @return
*/
@Override
public int getLengh() {
return size;
} /**
* 获得栈顶元素
*
* @return
*/
@Override
public E getTop() {
return (E) elementData[size - 1];
} /**
* 压入元素
*
* @param p 存储的值
* @return true 压入元素成功 false 失败
*/
@Override
public boolean push(Object p) {
if (size >= capacity) {
reclloc();
elementData[size] = p;
size++;
} else {
elementData[size] = p;
size++; }
return true;
} /**
* 扩容数组
*/
@Override
public void reclloc() {
elementData = Arrays.copyOf(elementData, 2 * DEFAULT_SIZE);
capacity = 2 * DEFAULT_SIZE;
} /**
* 弹出栈中的元素
*
* @return 所弹出的元素
*/
@Override
public E pop() { return (E) elementData[--size ];
} /**
* 遍历并且输出
*/
@Override
public void stackTraverse() {
for (Object a : elementData) {
System.out.println(a + " ");
}
}
}
栈的接口:
public interface MyStack<E> {
//清空栈
boolean clearStack();
//判断是否为空栈
boolean isEmpty();
//返回栈中的元素个数
int getLengh();
//返回栈的栈顶元素
E getTop();
//入栈
public boolean push(Object p);
//出栈
public E pop() ;
//编历栈
void stackTraverse();
//扩容数组
default void reclloc(){};
//进制转换
default String systemTransformation(String n,int n1,int n2) {
return "error";
}
//表达式求值
default boolean expressionEvaluation(String n){
return false;
}
//判断运算符优先级
default char precede(char a,char b){
return '#';
}
//括号匹配
default boolean correct(String n){
return true;
}
//回文判断
default boolean isPalindrome(String n){
return false;
}
}
java:数据结构复习(二)数组栈的更多相关文章
- java:数据结构(二)栈的应用(括号匹配)
一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()() 这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...
- java:数据结构(二)栈的应用(进制转换全收集)
说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...
- 我理解的数据结构(二)—— 栈(Stack)
我理解的数据结构(二)-- 栈(Stack) 一.栈基础 栈是一种线性结构 相比较数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶 栈是一种后进先出的数据结构 ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- Java基础复习之数组
Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...
- java数据结构与算法之栈(Stack)设计与实现
本篇是java数据结构与算法的第4篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是一种用于 ...
- Java数据结构和算法 - 数组
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
- Java数据结构和算法(四)——栈
stack,中文翻译为堆栈,事实上指的是栈,heap,堆. 这里讲的是数据结构的栈,不是内存分配里面的堆和栈. 栈是先进后出的数据的结构,好比你碟子一个一个堆起来.最后放的那个是堆在最上面的. 队列就 ...
- Java数据结构和算法(一)--栈
栈: 英文名stack,特点是只允许访问最后插入的那个元素,也就是LIFO(后进先出) jdk中的stack源码: public class Stack<E> extends Vector ...
- Java数据结构和算法之栈与队列
二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为 ...
随机推荐
- LVS的DR模型配置
LVS的DR模型配置 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 IP地址 角色 Srv ...
- Android调试神器stetho使用详解和改造
本文由云+社区发表 作者:NaOH 概述 stetho是Facebook开源的一个Android调试工具,项目地址:facebook/stetho 通过Stetho,开发者可以使用chrome的ins ...
- 2018-08-20 中文代码之Spring Boot集成H2内存数据库
续前文: 中文代码之Spring Boot添加基本日志, 源码库地址相同. 鉴于此项目中的数据总量不大(即使万条词条也在1MB之内), 当前选择轻量级而且配置简单易于部署的H2内存数据库比较合理. 此 ...
- .NET Core 3.0-preview3 发布
.NET Core 3.0 Preview 3已经发布,框架和ASP.NET Core有许多有趣的更新.这是最重要的更新列表. 下载地址 :https://aka.ms/netcore3downloa ...
- 百度APP移动端网络深度优化实践分享(一):DNS优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<一>DNS优化>,感谢原作者的无私分享. 一.前言 网络优化是客户端几大技术方 ...
- 引入外部 CDN失效时--怎么加载本地资源文件(本文以jquery为例)
相信大家都使用过CDN静态资源库,比如下面 CDN官方静态资源库:https://cdnjs.com/ 七牛前端公开库:http://staticfile.org (vue,react,nl都有) ...
- Json,Gson,Ajax基础知识
//json 是一种轻量级的文本格式,解析简单,他也是一键值来存,数据与数据的分割是以,来分割 //{} 看到大括号就是一个对象,[]代表集合 ,基本上所有数据的交互都是以json格式来进行传递的 / ...
- 一行命令更新所有 npm 依赖包
npm 包的更新速度很快,为了将项目或者全局依赖更新到最新版本.传统的做法是一个一个更新,比如更新 react 到最新版本,命令如下: # npm npm i --save react@latest ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- BaiduSpeechDemo【百度语音SDK集成】(基于v3.0.8.1)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 上一篇集成的是V3.0.7.3版本的SDK<BaiduSpeechDemo[百度语音SDK集成](基于v3.0.7.3)> ...