卜若的代码笔记-数据结构系列-第十章:栈一.顺序栈(数组栈)
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.太简单了,不介绍了,直接贴代码,有问题请看10,11,章 //测试代码public static void main(String[] args) throws IOException {Link ...
- 卜若的代码笔记-数据结构系列-第三章:链表-最简单的线性表:单链表
1.一个最简单的线性表 1.1单链表的特征: a.链表无法通过索引获取链表元素,只能从头开始一个一个的后继去找. b.链表无法找到父节点 1.2结构: 1.3 实现 我们来讨论一下它的时间复杂度: 1 ...
- 卜若的代码笔记-unityshader系列-第十七章:Shader练习.遮罩(Shader采样Image的Sprite)
1.遮罩的意义,就是让某个颜色的部分透明,其他的不透明. 实现思路很简单,但如果你是从这个系列一步一步上学过来的,那肯定很简单啦 1.1我们先定义一个标准Shader,然后慢慢改 Shader &qu ...
- 卜若的代码笔记-matlab系列-matlab基础教程-第二章:静态变量
persistent value; if isempty(value)value=20; endvalue=value+1;y=value; 注意,这段代码只允许定义在function里面
- 卜若的代码笔记-算法系列-第2个算法案例分析:HHM预测模型分析
1. 关于这个模型就去看 https://www.cnblogs.com/pinard/p/6991852.html 这篇博客吧...我主要是将这个它的那个案例画了一张图 案例代码: package ...
- 卜若的代码笔记-unityshader系列-第八章:复杂Mesh
这一章我们讲复杂的mesh为下一章的材质准备一些材料 8.1 创建一个矩形面片 本质就是绘制两个三角形面片,如图8-1.其代码有注释了就不做太多解释了. public virtual Mesh cre ...
- 卜若的代码笔记-python系列-神经网络篇-第十四章:基于keras框架的男女性别识别
1.我们来看一下整个网络的实现构架 以下显示面板利用的是keras的summary函数 (None, 65536) (None, 512) ______________________________ ...
- 卜若的代码笔记-webgl系列-第三章:几何渲染Rendering Geometry
1 在webgl里面表述几何体最关键的两种数据类型: 顶点和索引(vertices and indices.) 1.1 顶点是什么? 顶点定义了3D对象的角点,每一个顶点由三个元素组成x,y,z. 在 ...
- 卜若的代码笔记系列-unity系列-第一章:json-5001
1.该系列算的上是unity的网络应用,嗯,不讲基础的,要基础的网上太多了. 2.服务器请参考本人的sringboot系列的讲解 3.正文: unity提供了一个类 JsonUtility 最常用的是 ...
最新文章
- 2022-2028年中国氢化环氧树脂产业发展动态及投资趋势预测报告
- 华人计算机视觉科学家黄煦涛逝世,众多AI大牛发文缅怀
- pandas使用nlargest函数返回特定数据列中前N个最大值(搜寻最大的n个元素)、pandas使用nlargest函数返回特定数据列中前N个最大值所对应的数据行
- codevs 1047 邮票面值设计
- 海外IDC数据中心为什么要做REITs
- python local variable_python学习笔记 - local, global and free variable
- Java Socket编程详解
- -----------简单排序-------------
- 走进我的交易室03_第一步成功的外部障碍
- spring security3.x学习(3)_初探过滤器机制和auto-config用法
- 公交驾校自动约车脚本
- 计算机图形学 之 中点画线算法
- 下载Django中文官方文档
- 深夜加油站遇到苏格拉底
- [dlang](4)自定义的mysql orm工具
- 蓝牙LMP响应超时 BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT
- 免费P2P穿透通信(4) RDT可靠通信模块测试使用
- 9宫格实现微信朋友圈图片点击放大缩小弹簧效果
- wireshark抓包获取好友ip,定位所在位置
- ssm智能餐厅菜品厨位分配管理系统 java