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)当表中没有元素时称为 ...
随机推荐
- .Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow
在学习的过程中,看一些一线的技术文档很吃力,而且考虑到国内那些技术牛人英语都不差的,要向他们看齐,所以每天下班都在疯狂地背单词,博客有些日子没有更新了,见谅见谅 什么是TPL? Task Parall ...
- 详解synchronized与Lock的区别与使用
知识点 1.线程与进程 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程.关系是线程–>进程–>程序的大致组成结构.所以线程是程序执行流的最小单位 ...
- asp.net core系列 29 EF模型配置(查询类型,关系数据库建模)
一.查询类型 此功能是EF Core 2.1中的新功能. EF Core除了实体类型之外,EF Core模型还可以包含查询类型,这些查询类型是针对“未映射到实体类型”的数据获取.比如视图,或只读数据表 ...
- erlang 删除老版本 安装新版本
[root@izbp1buyhgwtrvlxv3u2gqz ~]# yum remove erlang-erts-R16B-03.18.el7.x86_64Loaded plugins: fastes ...
- 基于开源CA系统ejbca community 6.3.1.1构建私有CA管理数字证书
最后更新于2017年01月24日 一.为什么 为什么写这篇文章?ca是什么?数字证书是什么?ejbca又是什么? 让我们从http与https说起.http是超文本传输协议(HyperText Tra ...
- 【机器学习】--Adaboost从初始到应用
一.前述 AdaBoost算法和GBDT(Gradient Boost Decision Tree,梯度提升决策树)算法是基于Boosting思想的机器学习算法.在Boosting思想中是通过对样本进 ...
- [intellij IDEA]导入eclipse项目
1.因为最近eclipse在更新代码时经常卡死,就想将eclipse的项目迁移到idea.特意写下自己的经验,给迁移时遇到困难的朋友一些帮助 File -> new ->project f ...
- Dubbo简介
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...
- golang中Context的使用场景
golang中Context的使用场景 context在Go1.7之后就进入标准库中了.它主要的用处如果用一句话来说,是在于控制goroutine的生命周期.当一个计算任务被goroutine承接了之 ...
- ubuntu 安装 npm、nodejs 各种问题
nodejs let notifier = require('update-notifier')({pkg}) 报错 先卸载nodejs,然后安装稳定最新版 # apt-get remove node ...