1、栈。

(Android的Activity加载是基础栈结构的)

底层使用数组实现

package ch4;
/*** 栈* @author Howard* 特点:* 1、通常情况作为程序员的工具集来用* 2、受限访问,不可直接拿中间数据* 3、更加抽象(主要通过接口定义)* 4、表现形式为先进后出*/
public class MyStack {//底层使用数组来存储数据private long arr[];//栈顶的指针private int top;/*** 默认的构造,创建长度为100的数组*/public MyStack(){arr = new long[100];top = -1;}/*** 带参构造* 创建对象的时候指定数组大小* @param maxSize*/public MyStack(int maxSize){arr = new long[maxSize];//指定为-1原因是,添加数组,保证指针指向第一条数据top = -1;}/*** 压栈,添加数据* @param value*/public void push(long value){//++top保证第一次添加加入到数组第一个位置arr[++top] = value;}/*** 出栈,减少数据* @return*/public long pop(){//top--保证第一次出栈为栈顶最顶端数据return arr[top--];}/*** 查看数据,每一次拿出栈顶的数据* 底层是数组的最后一条数据* @return*/public long peek(){return arr[top];}/*** 判断栈是否为空* @return*/public boolean isEmpty(){//指针指向-1位置,说明数组为空,也就是栈为空return top == -1;}/*** 判断数组是否满了* @return*/public boolean isFull(){//top位于数组的最大值索引时,满栈return top == arr.length-1;}}

测试栈:

package ch4;public class TestMyTask {public static void main(String[] args) {MyStack myStack = new MyStack(5);myStack.push(23);myStack.push(13);myStack.push(33);myStack.push(20);myStack.push(27);System.out.println(myStack.isEmpty());System.out.println(myStack.isFull());System.out.println(myStack.peek());System.out.println(myStack.peek());while(!myStack.isEmpty()){System.out.println(myStack.pop());}System.out.println(myStack.isEmpty());System.out.println(myStack.isFull());}
}

打印输出:

false

true

27

27

27

20

33

13

23

true

false

2、队列

(Android中的Message是基于队列结构的)

底层使用数组实现

package ch4;
/*** 1、先进先出与栈相反* 2、通常情况作为程序员的工具集来用* @author Howard*/
public class MyQueue {//底层使用数组private long[] arr;//定义头指针private int top;//定义尾指针private int rear;//记录元素个数private int elements;public MyQueue(int maxSize){arr = new long[maxSize];top = 0;rear = -1;}/*** 增加数据* @param value*/public void insert(long value){if(rear == arr.length -1){//实现循环使用。超过以往值就覆盖原来内容rear = -1;}arr[++rear] = value;elements++;}/*** 移除数据,移除的队列最前面的数据* @return*/public long remove(){if(top == arr.length){//实现循环使用。底层top指向了最顶层,让指针再回到数组最开头top = 0;}elements --;return arr[top++];}/*** 查看数据,查看的队列头部的数据* @return*/public long peek(){return arr[top];}/*** 判断是否为空* @return*/public boolean isEmpty(){return elements == 0;}/*** 是否满了* @return*/public boolean isFull(){return elements == arr.length;}}

测试队列:

false

true

12

12

12

---------------------

12

32

18

10

2

true

false

现在使用数组实现栈和队列,等学习链表时,再用链表实现之。

数据结构java版之《栈和队列》相关推荐

  1. 看得见的数据结构Android版之数组表(数据结构篇)

    零.前言: 一讲到装东西的容器,你可能习惯于使用ArrayList和数组,你有想过ArrayList和数组的区别吗? Java的类起名字都不是随便乱起的,一般前面是辅助,后面是实质:ArrayList ...

  2. 看得见的数据结构Android版之数组表(视图篇)

    零.前言: 1.本文的姊妹篇:看得见的数据结构Android版之表的数组实现(数据结构篇) 2.希望你可以和我在Github一同见证:DS4Android的诞生与成长,欢迎star 3.激动人心的时刻 ...

  3. android 获取数组大小,看得见的数据结构Android版之数组表(数据结构篇)

    零.前言: 一讲到装东西的容器,你可能习惯于使用ArrayList和数组,你有想过ArrayList和数组的区别吗? Java的类起名字都不是随便乱起的,一般前面是辅助,后面是实质:ArrayList ...

  4. 数据结构java版之《数组》

    本篇文章,使用java语言,封装一个数组工具类.不使用系统提供的api. 包括一些数组的增删改查,有序添加,二分查找等功能. package ch01;public class MyArray {// ...

  5. 数据结构(java版)SortedSeqList(排序顺序表)

    SortedSeqList(排序顺序表) 代码部分: public class SortedSeqList<T extends Comparable<? super T>> e ...

  6. 数据结构java版txt,图解数据结构:使用Java

    图解数据结构:使用Java 下载 mobi epub pdf ☆☆☆☆☆ 胡昭民 著 下载链接在页面底部 发表于2021-03-10 图书介绍 出版社: 清华大学出版社 ISBN:9787302402 ...

  7. 数据结构(Java版 2022-10-30)

    第一章:算法介绍 数据结构与算法面试题" 一.字符串匹配问题:有一个字符串str1="计算机科学与技术学院欢迎您!" 和另一个字符串 str2="计算机科学与技 ...

  8. 数据结构(Java版2022-10-29)

    第一章:算法介绍 数据结构与算法面试题" 一.字符串匹配问题:有一个字符串str1="计算机科学与技术学院欢迎您!" 和另一个字符串 str2="计算机科学与技 ...

  9. 数据结构java版之 栈的应用一

    上一篇我们自定义了栈和队列.本篇使用栈结构来完成一个功能,看看他的应用.会分两篇讲解.本篇需求:设计一个栈结构,实现字符串的反转,字符串不包括汉子. 过程如下,因为代码做了很详细的解释.没有必要再去讲 ...

  10. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...

    分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分 ...

最新文章

  1. golang 函数 传入返回 slice/map/struct 本质
  2. opencl高斯源码整理
  3. 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
  4. mysql正则替换字符串_mysql中替换字符串(正则) 模糊
  5. FIR基本型仿真_03
  6. hbase插入数据语句_记一次 spark thriftserver 插入数据到hbase 的异常
  7. Rust 1.34.0 发布
  8. 标准模板库(STL) map —— 初始化问题
  9. 18Python标准库系列之logging模块
  10. ReactiveCocoa 用法实例
  11. HFSS - 倒F天线的设计与仿真
  12. 品达物流项目重点技术 微服务高性能实战
  13. 鸿蒙石boss 怎么杀,《仙侠世界》沧海岛副本介绍 沧海岛副本怎么玩
  14. 忍得住清贫 耐得住寂寞 禁得起诱惑
  15. 计算机维修logo在线设计,硕思logo设计师电脑版
  16. 【游戏建模】将Ciri转为守望先锋的角色
  17. 超声影像对2010 ACR/EULAR RA分类标准的影响: 结合两种不同的受累关节灰阶滑膜炎超声定义的分类标准...
  18. 用SkinMagic工具包创建换皮肤程序
  19. C#接口--C#基础
  20. 苏教版四年级下册计算机说课稿,苏教版四年级下册语文《古诗两首》的说课稿4篇...

热门文章

  1. 直销软件开发是java好还是.net好
  2. 晶振简介(OCXO恒温、 MCXO数补、VCXO压控、VCTCXO、VCOCXO)
  3. android驱动开发工程师,android驱动开发工程师
  4. Qt/C++调用Windows画图板mspaint,打开指定路径的图片文件,从文件路径中提取目录名和文件名
  5. 寺冈labelnet使用说明_用TensorFlow训练一个目标检测器(手把手教学版)
  6. linux内核分析课程笔记(二)
  7. 非简谐近似马库斯电荷转移理论揭示MoS₂场效应晶体管中缺陷引起的电荷俘获/退俘获和迟滞现象
  8. 网件netgear WNDR4300v2 循环重启 变砖 修复
  9. 蚂蚁金服@玉伯:我是阿里P10成长之路!
  10. VisionPro_9.5中多图像拼接简单操作