1.栈有两种写法,一种是以数组为躯干的顺序栈,一种是以链表为躯干的链式栈。

1.1栈的操作

1.1.1 出栈pop()函数

允许栈出,栈出之后,顶数据有移除操作。

时间复杂度o(1)

1.1.2 入栈push()函数

入栈,入栈之后,前一个数据网后呀。

时间复杂度o(1)

1.1.3 顶数据获取:peek()函数

不会做数据的移除。

时间复杂度o(1)

1.1.4 判空函数len()

当用于遍历的时候,需要知道判空的终止节点。

1.1.5 元素获取:search(int index)

获取节点的某个元素。

时间复杂度o(1);

2.我们来实现一个顺序栈

我们已经知道了上述方法,还是得建立一个继承体系。

先写一个接口叫IStack

public interface IStack<T> {void push(T t);T pop();T peek();T search(int index);int len();
}

然后实现这个接口

package com.stack.order;import java.util.LinkedList;
import java.util.List;
import java.util.Objects;public class OrderLinkStack<T> implements IStack<T>{public OrderLinkStack(int index){tArray = (T[])new Object[index];}T[] tArray;int pointer = 0;@Overridepublic void push(T t) {tArray[pointer] = t;pointer++;}@Overridepublic T pop() {return tArray[--pointer];}@Overridepublic T peek() {return tArray[pointer - 1];}@Overridepublic T search(int index) {return tArray[index];}@Overridepublic int len() {return pointer;}}

我们写一个Int类型的栈

public class IntOrderLinkStack extends OrderLinkStack<Integer> {public IntOrderLinkStack(int index) {super(index);}
}

然后测试这个栈

测试结果

3.数组栈的问题

不能自动扩容,有个容量峰值。这点不太好。当然,这也是种访问机制。search的时候,时间复杂度为o(1)这一点就相当爽了。

卜若的代码笔记-数据结构系列-第十章:栈一.顺序栈(数组栈)相关推荐

  1. 卜若的代码笔记-数据结构系列-第十二章:栈三.链栈

    1.太简单了,不介绍了,直接贴代码,有问题请看10,11,章 //测试代码public static void main(String[] args) throws IOException {Link ...

  2. 卜若的代码笔记-数据结构系列-第三章:链表-最简单的线性表:单链表

    1.一个最简单的线性表 1.1单链表的特征: a.链表无法通过索引获取链表元素,只能从头开始一个一个的后继去找. b.链表无法找到父节点 1.2结构: 1.3 实现 我们来讨论一下它的时间复杂度: 1 ...

  3. 卜若的代码笔记-unityshader系列-第十七章:Shader练习.遮罩(Shader采样Image的Sprite)

    1.遮罩的意义,就是让某个颜色的部分透明,其他的不透明. 实现思路很简单,但如果你是从这个系列一步一步上学过来的,那肯定很简单啦 1.1我们先定义一个标准Shader,然后慢慢改 Shader &qu ...

  4. 卜若的代码笔记-matlab系列-matlab基础教程-第二章:静态变量

    persistent value; if isempty(value)value=20; endvalue=value+1;y=value; 注意,这段代码只允许定义在function里面

  5. 卜若的代码笔记-算法系列-第2个算法案例分析:HHM预测模型分析

    1. 关于这个模型就去看 https://www.cnblogs.com/pinard/p/6991852.html 这篇博客吧...我主要是将这个它的那个案例画了一张图 案例代码: package ...

  6. 卜若的代码笔记-unityshader系列-第八章:复杂Mesh

    这一章我们讲复杂的mesh为下一章的材质准备一些材料 8.1 创建一个矩形面片 本质就是绘制两个三角形面片,如图8-1.其代码有注释了就不做太多解释了. public virtual Mesh cre ...

  7. 卜若的代码笔记-python系列-神经网络篇-第十四章:基于keras框架的男女性别识别

    1.我们来看一下整个网络的实现构架 以下显示面板利用的是keras的summary函数 (None, 65536) (None, 512) ______________________________ ...

  8. 卜若的代码笔记-webgl系列-第三章:几何渲染Rendering Geometry

    1 在webgl里面表述几何体最关键的两种数据类型: 顶点和索引(vertices and indices.) 1.1 顶点是什么? 顶点定义了3D对象的角点,每一个顶点由三个元素组成x,y,z. 在 ...

  9. 卜若的代码笔记系列-unity系列-第一章:json-5001

    1.该系列算的上是unity的网络应用,嗯,不讲基础的,要基础的网上太多了. 2.服务器请参考本人的sringboot系列的讲解 3.正文: unity提供了一个类 JsonUtility 最常用的是 ...

最新文章

  1. 2022-2028年中国氢化环氧树脂产业发展动态及投资趋势预测报告
  2. 华人计算机视觉科学家黄煦涛逝世,众多AI大牛发文缅怀
  3. pandas使用nlargest函数返回特定数据列中前N个最大值(搜寻最大的n个元素)、pandas使用nlargest函数返回特定数据列中前N个最大值所对应的数据行
  4. codevs 1047 邮票面值设计
  5. 海外IDC数据中心为什么要做REITs
  6. python local variable_python学习笔记 - local, global and free variable
  7. Java Socket编程详解
  8. -----------简单排序-------------
  9. 走进我的交易室03_第一步成功的外部障碍
  10. spring security3.x学习(3)_初探过滤器机制和auto-config用法
  11. 公交驾校自动约车脚本
  12. 计算机图形学 之 中点画线算法
  13. 下载Django中文官方文档
  14. 深夜加油站遇到苏格拉底
  15. [dlang](4)自定义的mysql orm工具
  16. 蓝牙LMP响应超时 BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT
  17. 免费P2P穿透通信(4) RDT可靠通信模块测试使用
  18. 9宫格实现微信朋友圈图片点击放大缩小弹簧效果
  19. wireshark抓包获取好友ip,定位所在位置
  20. ssm智能餐厅菜品厨位分配管理系统 java

热门文章

  1. UART驱动_linux
  2. 怎么把tiff文件转换为jpg?教你三种方式
  3. Win32 API中内存的申请与释放
  4. 华为P30 Pro真机流出:屏下指纹,镜头10倍变焦?
  5. 紫外线防护服,UV灯紫外线防护衣服,WKM-1,UV涂层材料
  6. Android-Kotlin-印章类,AnyChat音视频互动开发平台
  7. 基于echarts定制修改的k线图工具
  8. 火热11.11,HyperX Cloud Earbuds(活力黄)耳机新品抢先体验
  9. ffmpeg-avi转mp4命令,顺带记一次遇到的问题
  10. 6款支持中文开源OCR软件的简单使用